很简单的问题,关于String的 对于String类来说 String s="1";和String s=new String("1");都创建了新对象,==比较的是序列号 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String 对象一旦产生就不能改变任何(加减)操作都会有一个新的对象 to super_zzw对于String类来说 String s="1";和String s=new String("1");都创建了新对象,==比较的是序列号什么是序列号? == 运算应用于对象时比较的 是引用本身 不是指向的对象如果两个引用指向的是同一个对象 结果就是 true to longaway()我想需要的是回答我提的问题,而不是在这里讨论==和equals()的比较是值(by value)还是引用(by reference)的问题 但 jvm 会优化代码把程序里相同的 常量 ( "1" )合并成一个对象正规 并 安全的方法 还是 .equals() to longaway()我只是想知道"1";new String("1");的定义有什么不同 to langaway()在 s3 = "1"; 的时间,没有使用new运算符分配空间,s3是否重新分配了内存空间,s3到底分配到什么地方去了?为什么在 String = "String"的时间,==比较的结果永远为true. obj==obj比较的是对象的引用obj.equals(obj)比较的是值(注意,这里的obj是系统的class,不是用户自己定义的class)所以当String s3 = "1";String s4 = "1";的时候s3和s4都是指向同一个对象"1"的引用,所以无论是引用还是引用所代表的值,都是相等的 我自己有一个个人的理解,不过不好说!反正用==时,System.out.println(s1.intern()==s2.intern());绝对是正确的结果! to locker"1";new String("1");的定义有什么不同 "1";new String("1");的定义有什么不同(我想知道的是系统在分配内存的时间是怎样操作的) String s1=new String("1");创建了一个字符串类的实例S1,String s1="1"创建的是一个字符串类型变量!==比较对象,似乎是不行的!这是个人理解! to Lintops字符串类型不是Java的内部类型他实际就是用户自定义类String 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。 weimenren(愚人碼頭):对于Integer类型不知道你是不是同样的理解,类似上面:Integer s1 = new Integer("1");Integer s2 = new Integer("1");这时如果比较s1==s2 结果肯定是false;但是如果使用:s1.intValue()==s2.intValue();结果同样也一定是true;因为Integer(整数类)转变成了int(整数类型),当然我的理解没有考虑内存分配方面. to Lintops(披星戴月) int是Java的内部数据类型对应的类为Integer但String在Java中一直是以一个非常特殊的字符串类来处理的我们没有字符串内部数据类型to whiteshen(White Shen) literal string是什么 这个问题再讨论也没有什么意思,自己看书去,郁闷ing 新手问题 java实现FTP上传下载软件(各们大侠请帮帮忙,考试题目) 高分讨论~如何实现Table的递归查询~ 如何实现单击按钮弹出窗口 一个棘手的问题,请高手帮忙!! 想学JAVA,问两个入门的问题。 JInternalFrame拖拽时,如何才能使JInternalFrame在设定的宽、高中拖拽,不超出这个范围! 请教! ??请问有谁做过用户登录的模块????? 还是数据类型方面的问题 谁能提供一个win2000(server版)的下载,其他的版本也行(200分送上)(在线等待)。 这样取得java.sql.Date日期中的年?
任何(加减)操作都会有一个新的对象
如果两个引用指向的是同一个对象 结果就是 true
把程序里相同的 常量 ( "1" )
合并成一个对象正规 并 安全的方法 还是 .equals()
"1";
new String("1");
的定义有什么不同
在 s3 = "1"; 的时间,没有使用new运算符分配空间,s3是否重新分配了内存空间,s3到底分配到什么地方去了?为什么
在 String = "String"的时间,==比较的结果永远为true.
obj.equals(obj)比较的是值(注意,这里的obj是系统的class,不是用户自己定义的class)
所以当
String s3 = "1";String s4 = "1";的时候
s3和s4都是指向同一个对象"1"的引用,所以无论是引用还是引用所代表的值,都是相等的
反正用==时,System.out.println(s1.intern()==s2.intern());
绝对是正确的结果!
new String("1");
的定义有什么不同
new String("1");
的定义有什么不同(我想知道的是系统在分配内存的时间是怎样操作的)
创建了一个字符串类的实例S1,
String s1="1"
创建的是一个字符串类型变量!
==比较对象,似乎是不行的!
这是个人理解!
这样声明的时候,在内存里产生了2个不同的对象(虽然值是一样的)。s1和s2的reference是不同的,尽管他们的值是相同的(用equals方法返回true)。也就是说这时有2个不同的实例。而String s1 = "1", s2 = "1";
由于"1"是literal string,在分配内存空间的时候,声明s2的时候会找内存空间中是否已经存在,存在了就指向同一个地方,也就使得这种声明的变量(如果值一样的话)作比较的时候始终返回true。
对于Integer类型不知道你是不是同样的理解,类似上面:
Integer s1 = new Integer("1");
Integer s2 = new Integer("1");
这时如果比较s1==s2 结果肯定是false;
但是如果使用:s1.intValue()==s2.intValue();结果同样也一定是true;
因为Integer(整数类)转变成了int(整数类型),当然我的理解没有考虑内存分配方面.
to whiteshen(White Shen) literal string是什么