String s="abce" 与 String s=new String("abcd") 的区别 那位大侠知道String s="abce" 与 String s=new String("abcd") 的区别,请告诉在下地声,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String s="abce"是一种非常特殊的形式,和new 有本质的区别.它是java中唯一不需要new 就可以产生对象的途径.以 String s="abce";形式赋值在java中叫直接量,它是在常量池中而不是象new 一样放在压缩堆中.这种形式的字符串,在JVM内部发生字符串拘留,即当声明这样的一个字符串后,JVM会在常量池中先查找有有没有一个值为"abcd"的对象,如果有,就会把它赋给当前引用.即原来那个引用和现在这个引用指点向了同一对象,如果没有,则在常量池中新创建一个"abcd",下一次如果有String s1 = "abcd";又会将s1指向"abcd"这个对象,即以这形式声明的字符串,只要值相等,任何多个引用都指向同一对象.而String s = new String("abcd");和其它任何对象一样.每调用一次就产生一个对象.只到它们调用intern()方法时才会产生上面那种效果. java 读取文件 JAVA编写记事本的时候想实现粘贴功能的代码,但是粘贴的时候会自动换到下一行粘贴,这是为什么?求高手 !!!!!!! 有关java内存的问题 关于java连接sqlserver2000的问题 想知道JAVA程序里面解释的机理是什么?? 窗体无法载入帮我看看谢谢! 数据不能更新的怪问题 可运行的jar打包问题 关于JAVA中ZIP流使用时汉字处理的问题! 掌握向上转型与向下转型 如何计算2的128次方 有偿转让Java即时通信工具源程序及设计文档
这种形式的字符串,在JVM内部发生字符串拘留,即当声明这样的一个字符串后,JVM会在常量池中先查找有有没有一个值为"abcd"的对象,如果有,就会把它赋给当前引用.即原来那个引用和现在这个引用指点向了同一对象,如果没有,则在常量池中新创建一个"abcd",下一次如果有String s1 = "abcd";又会将s1指向"abcd"这个对象,即以这形式声明的字符串,只要值相等,任何多个引用都指向同一对象.而String s = new String("abcd");和其它任何对象一样.每调用一次就产生一个对象.只到它们调用
intern()方法时才会产生上面那种效果.