黑马程序员技术交流社区

标题: str=null与String str=""的区别 [打印本页]

作者: 漠陌    时间: 2015-8-22 00:50
标题: str=null与String str=""的区别


1、说明Java中String  str=null与String  str=""的区别?
    String str = null 表示声明了一个String对象的引用str,但是没有为其分配内存空间。
    String str = "" 表示创建了一个长度等于0的空字符串,并在内存中为其分配了内存空间。
String str = new String("tw"); str在内存中有两个对象,1.堆内存有一个 new Sting 2.常量池中有一个字符串。
2、使用运算符"= ="和方法equals() 进行比较对象的区别?
    使用"= ="算符比较基本数据类型时,比较的是值相等;使用"=="算符比较对象时,比较的是内存地址和内容。
    使用equals()方法 比较对象时,比较的是对象的内容,与地址无关,如果没有重写equals()方法就直接调用的是Object的equals()方法。
"=="比较的是外在和内涵;equals()比较的是外在。用博大精深的中文讲就是:一个相同,一个相似。


作者: cat73    时间: 2015-8-22 06:15
无论是哪个,都会在栈内占用4个或8个字节(取决于JVM的位数),null的不在堆内占用空间,""在堆内分配了一些空间去存储一个空字符串。
作者: zhao1991    时间: 2015-8-22 08:46
不太准确
作者: kevin986745    时间: 2015-8-22 08:47
一个是内存地址,一个是字符串,自然不一样!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2