对于String类来说 String s="1";和String s=new String("1");都创建了新对象,==比较的是序列号

解决方案 »

  1.   

    String 对象一旦产生就不能改变
    任何(加减)操作都会有一个新的对象
      

  2.   

    to super_zzw对于String类来说 String s="1";和String s=new String("1");都创建了新对象,==比较的是序列号什么是序列号?
      

  3.   

    == 运算应用于对象时比较的 是引用本身 不是指向的对象
    如果两个引用指向的是同一个对象 结果就是 true
      

  4.   

    to longaway()我想需要的是回答我提的问题,而不是在这里讨论==和equals()的比较是值(by value)还是引用(by reference)的问题
      

  5.   

    但 jvm 会优化代码
    把程序里相同的 常量 ( "1" )
    合并成一个对象正规 并 安全的方法 还是 .equals()
      

  6.   

    to longaway()我只是想知道
    "1";
    new String("1");
    的定义有什么不同
      

  7.   

    to langaway()
    在 s3 = "1"; 的时间,没有使用new运算符分配空间,s3是否重新分配了内存空间,s3到底分配到什么地方去了?为什么
    在 String = "String"的时间,==比较的结果永远为true.
      

  8.   

    obj==obj比较的是对象的引用
    obj.equals(obj)比较的是值(注意,这里的obj是系统的class,不是用户自己定义的class)
    所以当
    String s3 = "1";String s4 = "1";的时候
    s3和s4都是指向同一个对象"1"的引用,所以无论是引用还是引用所代表的值,都是相等的
      

  9.   

    我自己有一个个人的理解,不过不好说!
    反正用==时,System.out.println(s1.intern()==s2.intern());
    绝对是正确的结果!
      

  10.   

    to locker"1";
    new String("1");
    的定义有什么不同
      

  11.   

    "1";
    new String("1");
    的定义有什么不同(我想知道的是系统在分配内存的时间是怎样操作的)
      

  12.   

    String s1=new String("1");
    创建了一个字符串类的实例S1,
    String s1="1"
    创建的是一个字符串类型变量!
    ==比较对象,似乎是不行的!
    这是个人理解!
      

  13.   

    to Lintops字符串类型不是Java的内部类型他实际就是用户自定义类String
      

  14.   

    String s1 = new String("1);String s2 = new String("1);
    这样声明的时候,在内存里产生了2个不同的对象(虽然值是一样的)。s1和s2的reference是不同的,尽管他们的值是相同的(用equals方法返回true)。也就是说这时有2个不同的实例。而String s1 = "1", s2 = "1";
    由于"1"是literal string,在分配内存空间的时候,声明s2的时候会找内存空间中是否已经存在,存在了就指向同一个地方,也就使得这种声明的变量(如果值一样的话)作比较的时候始终返回true。
      

  15.   

    weimenren(愚人碼頭):
    对于Integer类型不知道你是不是同样的理解,类似上面:
    Integer s1 = new Integer("1");
    Integer s2 = new Integer("1");
    这时如果比较s1==s2 结果肯定是false;
    但是如果使用:s1.intValue()==s2.intValue();结果同样也一定是true;
    因为Integer(整数类)转变成了int(整数类型),当然我的理解没有考虑内存分配方面.
      

  16.   

    to Lintops(披星戴月) int是Java的内部数据类型对应的类为Integer但String在Java中一直是以一个非常特殊的字符串类来处理的我们没有字符串内部数据类型
    to whiteshen(White Shen) literal string是什么
      

  17.   

    这个问题再讨论也没有什么意思,自己看书去,郁闷ing