发现一个问题
if(name=="")
""占不占内存空间呢
我觉得应该是占的
因为==好象是比较左右的内存地址是否相同
但是name也占了内存空间了,从某种意义上说它们两个的内存空间好象是不可能同等的,那么name==""不就永远为false了,搞不懂
if(name=="")
""占不占内存空间呢
我觉得应该是占的
因为==好象是比较左右的内存地址是否相同
但是name也占了内存空间了,从某种意义上说它们两个的内存空间好象是不可能同等的,那么name==""不就永远为false了,搞不懂
String常量都会访问一块内存。所以,如果
String name = "";
String name2 = "";
if (name == name2)就会返回true滴
if("".equals(name)){
}
equals 是比较两个对象是否相等,即引用地址
例如
A a=new A()
A b=new A()
a=b
a.equals(b) 是 true 比较的是 a和b的 引用地址
你的哪个有点缺陷
应该像老老紫竹 那样写
因为 当你的 name=null的时候 会出错,也就是说equals()这个方法的参数不是是 null
"".equals(name) 这样写就没问题了
内存空间的问题我个人理解java里是 分 引用和 和实际地址空间的也就是说 当你 定义了一个 nameString name;的时候
他只是 有个一个引用,因为并没有给他赋值
所以他是没有具体指向 某的地址的也就是说 String st=new String(“dage”)
这是创建了 两个 对象
一个是 st的引用 一个是 st具体指向的地址 dage
明白吗??
equals:是比较两个对象的值是否相等.