String s = new String("xyz");创建了几个String Object? 创建了两个,看一下source code就知道了,做了一次array copy 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 错了应该说运行期创建了一个,编译期创建了一个.固定字符串在编译期会被放入string pool 请问zhengkan,我怎么才能看到source code呢? 请问zhengkan,固定字符串在编译期会被放入string pool,那么假如我这么写呢? String s1 = "xyz"; String s2 = s1; s1 = "abc";是不是可以理解成第一步创建了一个String object,然后这个对象放入了String pool;第二步将地址的拷贝赋值给了变量s2;第三步是又创建了一个String object,s1指向了这个新对象? 二个,new String("xyz");产生一个临时的string对像,然后系统根据s重载的=运算符再次产生一个String对像 根据zhang9652的意思,String s = new String("xyz")是产生了2个,那么如果分成2句来写,String s1 = "xyz";//这是产生第一个String s2 = s1; 这样是否只产生了一个呢?String重载的=运算符内部是什么机制呢? jdk\src.zip\java.lang.String.javasometimes src.zip is src.jar 其实字符串的=操作没什么特别的,就是把地址赋值过去,String是一个对象,产生的变量必然是一个引用。明白这个你就明白String了:String s1 = "xyz";String s2 = "xyz";String s3 = "x" + "yz";System.out.println(s1 == s2);System.out.println(s1 == s3); 楼上dx,我理解这样的话打印出来应该是两个false,怎么是两个true呢?也就是说,java会找到现有的内容相同的字符串对象,然后把地址进行赋值吗? ^_^。是一个字符串的refenrence.^_^ 这就是String pool,在编译期做好的东西,呵呵 同意zhengkan,java 处理字符串时用了一个String pool.当创建一个新的String Object时,首先会在String pool中查找是否内相同的String,如果有,就只是引用一个地址,所以在用“==”比较时的结果是true. 按照楼上的意见,那么此时==和equals是相同的作用。那么java是怎么维护String pool呢?为什么很多时候==和equals又是不同的结果呢? String 即可以看做字副串变量,有可以看做一个类,当然只创建一个 字符串格式化问题 请大家帮忙??? 我参加一个单位的招聘考试,我会C#,但不会Java,遇到这个问题: 一个非常简单的问题,请大家指点下!!! memcached应用类 菜鸟问:接口为何会有实现具体方法的函数? Filter中的问题? jdbc事务启动问题 关于日期计算???? 今天你java了吗 关于流的菜鸟问题 输入输出流的问题
固定字符串在编译期会被放入string pool
String s1 = "xyz";
String s2 = s1;
s1 = "abc";
是不是可以理解成第一步创建了一个String object,然后这个对象放入了String pool;第二步将地址的拷贝赋值给了变量s2;第三步是又创建了一个String object,s1指向了这个新对象?
String s1 = "xyz";//这是产生第一个
String s2 = s1;
这样是否只产生了一个呢?String重载的=运算符内部是什么机制呢?
String s1 = "xyz";
String s2 = "xyz";
String s3 = "x" + "yz";
System.out.println(s1 == s2);
System.out.println(s1 == s3);
也就是说,java会找到现有的内容相同的字符串对象,然后把地址进行
赋值吗?
是一个字符串的refenrence.
^_^