发现一个问题
if(name=="")
""占不占内存空间呢
我觉得应该是占的
因为==好象是比较左右的内存地址是否相同
但是name也占了内存空间了,从某种意义上说它们两个的内存空间好象是不可能同等的,那么name==""不就永远为false了,搞不懂

解决方案 »

  1.   

    不一定哟jvm会在初始化的时候对字符串进行优化
    String常量都会访问一块内存。所以,如果
    String name = "";
    String name2 = "";
    if (name == name2)就会返回true滴
      

  2.   

    2楼的朋友,那在name==""这里""可以算作是一个常量,如果这样理解的话就好理解了
      

  3.   

    我终于明白了,""是一个String object,只不过内容长度为零,但内存空间已经建立
      

  4.   

    那到底是true还是false?我咋个觉得该是false.==比较的是引用啊
      

  5.   

    判断字符串是否相等,因改用
    if("".equals(name)){
    }
      

  6.   

    ==  比较的是两个值是否相当
    equals 是比较两个对象是否相等,即引用地址
    例如  
    A a=new A()
    A b=new A()
    a=b
    a.equals(b)   是 true 比较的是 a和b的 引用地址
    你的哪个有点缺陷
    应该像老老紫竹 那样写
    因为 当你的  name=null的时候 会出错,也就是说equals()这个方法的参数不是是  null
    "".equals(name) 这样写就没问题了
      

  7.   

    补充一下
    内存空间的问题我个人理解java里是 分 引用和 和实际地址空间的也就是说 当你 定义了一个 nameString name;的时候
    他只是 有个一个引用,因为并没有给他赋值
    所以他是没有具体指向 某的地址的也就是说  String st=new String(“dage”)
    这是创建了 两个 对象
    一个是 st的引用  一个是 st具体指向的地址  dage
    明白吗??
      

  8.   

    ==:是比较两个引用对象是否相等.
    equals:是比较两个对象的值是否相等.
      

  9.   

    楼上说的不对吧,equal  比较的是字符串的值