博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java | 空字符串与NULL的区别
阅读量:5743 次
发布时间:2019-06-18

本文共 849 字,大约阅读时间需要 2 分钟。

空字符串

  • 类型: "" 是一个空字符串,长度为0,在内存中分配一个空间,可以使用 Object 对象中的方法。例如"".toString()
  • 内存分配Stirng str = "":表明声明一个字符串类型的引用,其值""为空字符串,这个 str 引用指向的是空字符串 "" 的内存空间

null

  • 类型:null 表明一个对象的值,不是一个字符串,并没有分配内存,比如String str = null
  • 内存分配String str = null:表明声明一个字符串对象的引用,但其指向一个null,也就是说没有指向任何内存空间
String str1 = ""     // str对应一个空串,声明对象的引用String str2 = null   // str2引用为空String str3 = new String()      //str3指向具体的String实例, 默认为""**注意**:str1和str3都被实例化,都指向了内存中的空间,虽然str1和str2指向的地址不一样,但是值是一样的,都是"",而str2没有被实例化复制代码

比较

由于 null 不是对象,"" 是对象,所以比较的方式是

str1.equals("")     //对象用equals方法来比较str2 == null        //null用==来比较复制代码

总结

  1. Java中有两种比较大小的方式:==equals方法,前者是根据地址来比较,只有地址和值都相等,则两者才相等;后者则是根据变量的值比较大小,只要值相等,两者便相等。
  2. 在Java中变量和变量引用都是存在栈 (stack) 中,而对象 (new出来的)都是存放在堆 (heap) 中的,例如: String a = new Stirng("ABC") //a存放在栈中,而ABC这个值存放在堆中,a指向ABC在堆中的地址

转载于:https://juejin.im/post/5a3613b7f265da430a50a870

你可能感兴趣的文章
4-学会刷Wi-Fi模块固件(刷AT指令固件)
查看>>
ASP.NET Core 2 学习笔记(五)静态文件
查看>>
Button 使用Command 按钮置灰未更新
查看>>
Ansible windows客户端安装及部分模块使用(学习笔记十六)
查看>>
KEYVALUE
查看>>
Zabbix 监控图表中乱码的解决办法
查看>>
有哪一种编程语言比其他的更安全吗?
查看>>
深度学习图像分割(一)——PASCAL-VOC2012数据集(vocdevkit、Vocbenchmark_release)详细介绍...
查看>>
Ubuntu 16.04下搭建基于携程Apollo(阿波罗)配置中心单机模式
查看>>
常用的API接口,返回JSON格式的服务API接口
查看>>
一直被世人误解的薛定谔猫:批判量子力学及其残忍的隐喻
查看>>
iOS - 解决Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named
查看>>
数据结构思维 第四章 `LinkedList`
查看>>
《碟中谍5》背后的生物识别技术大比拼
查看>>
Linux通用KVM自动安装Shell脚本(兼容所有Linux发行版/CentOS/Ubuntu)
查看>>
Docker EE 2.0 版本助力 Kubernetes ,让部署不再复杂!
查看>>
十七年价值传承与技术领先,新华三入门级存储历久弥新
查看>>
「镁客·请讲」FXG Nikk Mitchell:优质VR内容能够带你真正进入细节
查看>>
Theano 中文文档 0.9 - 7.2.1 起手式 —— 代数
查看>>
抠图不再麻烦,Adobe 新算法让 P 图以假乱真
查看>>