String s1="this is the first string.";
String s2=new String("this is the first string.");
请问一下两者有何区别 谢谢
String s2=new String("this is the first string.");
请问一下两者有何区别 谢谢
解决方案 »
- 使用了双缓冲,但动画还是闪烁,怎么修改?
- 客户端 服务端 实现MP3文件的传输???
- bluecove.jar开发蓝牙文件传输时的配对问题,请高手解答
- 请问怎么过滤树节点,注意是过滤,不是查找
- 连接oracle数据库出了点问题,懂的帮忙解决一下。。
- javax.swing中JFrame,JDialog,JWindow,JApplet之间的层次关系是什么
- Eclipse中开发SWT的东西用那个插件最好用?
- 一段代码编译通过了可是运行时却报告Exception in thread "main" java.lang.NoclasDefFoundError,可是我把它放在jbuilder却可正确运行,c
- 我的APPLET怎么在IE里不能显示啊!
- 内部类访问局部变量不是要加final吗
- 求代码,怎么用JAVA取机器的mac地址,立即揭贴。
- 大家帮忙看一下,这道题目应该怎么填最适当~
这个分配在jvm的终生代里面
String s2=new String("this is the first string.");这个分配在jvm的新生代里面。
所以不是同一个对象。s2.intern()之后 s1==s2
第二个创建了两个对象
所以他们两个不相等 !
??????????????????????????第一个对象不一定要创建 而第二个对象是一定会创建的
String s2=new String("this is the first string.");这行可以怎么写:String s2=new String();
s2="this is the first string.");也就是说它也是创建了一个对象` 不同意楼上的观点!!~
在java中,有个字符串池,在这个池中存放了系统使用过的字符串,
当用户再次使用时,java会自动引用。
如下:
String s="abc";
String s2 = "abc";
当定义s时,java会在字符串池中新生成一个对象,"abc";
当用户定义这样(String s2 = "abc";)定义s2时,java机制会在字符串池中查找有没有"abc"对象,如果有,就将对象的引用给s2。
所以,此时,s 和s2是同一个对象。
但是,当用户用new来生成字符串对象时,java的处理机制和其它的对象相同。
所以当用户如下操作时:
String s2 = new String("abc");
它会像生成其它对象一样,生成一个新的对象"abc",这个时,s和s2是不同的对象,不过值相同。
并且,当用户将s2指向别的地方时,新生成的对象会自动释放.
如:s2 = "aaaaa".
明白了吗?
第二个不进行查找 直接在内存中新建一个空间 然后将"this is the first string."附值给s2这里用到了字符串池的概念!!!!
第二个.是先开辟一个内在空间来放地址,名为s2,s2用来指向this is the first string