新手求助。String创建了几个对象 string对象 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String s = new String("abc"); 这样String 是两个对象,一个是abc 一个是null== 比较的是两个对象的内存地址是否一样equals()比较的是内存里面的值是否一样 你的“qwe”在常量池中地址是相同的,而a,b引用的都是这个地址,==又是比较地址的,所以是true string是final修饰,你这么写是常量,并没有创建对象,存在于堆中,建议你看常量池! 建议你看一下==和equal的比较~ 补充一下。==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同 三个对象,a,b,"qwe"。a,b都指向同一个引用地址X0nnnn,X0nnnn就表示的是“qwe”。 churige 的回答已经很清楚了 String a="qwe";String b="qwe";使用的是常量池,因为是相同的字符串,所以只会创建同一个对象。如果使用的是String a=new String("qwe");String b=new String("qwe");那此时就是创建不同的对象了。 http://blog.csdn.net/hello_yz/article/details/39024453,你看看算不算解决了你的问题。如果想更深入了解,建议看看java内存分配相关的。JVM为了节约空间提高效率神马的,还是做了很多事情的~~~~~ java 在窗口中实现sql语句 这两者的写法有什么区别?那一种更好呢? 一个关于applet的显示问题 protected的问题 有关Java的时间问题 java线程_一个主线程产生后就沉睡,直到外部一个条件唤醒后,新建一个子线程,让子线程完成一些工作,主线程再继续沉睡 char变为String 创建File对象问题 小小菜鸟问题,大家帮忙 请问截取输入并加密问题? 发送几万个get请求,然后得到结果存文件里,怎么处理呢? Java 如何实现去掉XML注释
这样String 是两个对象,一个是abc 一个是null
== 比较的是两个对象的内存地址是否一样
equals()比较的是内存里面的值是否一样
如果使用的是String a=new String("qwe");String b=new String("qwe");那此时就是创建不同的对象了。
JVM为了节约空间提高效率神马的,还是做了很多事情的~~~~~