JAVA里面 String a = "aaa"; 和 String a = new String("aaa");有什么区别?

如题所述

"aaa " 是一个字符串常量,它应该放在静态存储区,和 static, final变量放在一块而new String( "aaa ") 创建了一个和字符串 "aaa "内容一样的字符串,不过这个字符创放在堆上的。

String str=new String( "aaa "); 在这条语句中产生了两个字符串,第一个字符串是字符串常量 "aaa ",第二个字符串是new String语句产生的字符串,它的内容和 "aaa "一样。
给你一段程序,就可以看出他们的区别
String s1 = "aaa ";
String s2 = "aaa ";
String s3 = new String( "aaa ");
System.out.println(s1 == s2);//true 同样使用的是常量,地址相同
System.out.println(s1 == s3);//false 使用常量与使用对象(new出来的)是不同的
System.out.println(s1.equals(s3));//true 内容相同,都是 "aaa "
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-26
楼上两个说的不完全正确
String a = "aaa";
用这种方式的时候java首先在内存中寻找"aaa"字符串,如果有,就把aaa的地址给它
如果没有则创建
String a = new String("aaa");
是不管内存中有没有"aaa"
都开辟一块新内存保存它
可以用以下方法验证下
String a = "aaa";
String b = "aaa";
String c = new String("aaa");
System.out.println(a==b);
System.out.println(a==c);
结果应该是:
true
false
此题作为java程序员笔试题几率比较高。
你要好好记住哦!O(∩_∩)O~

参考资料:原创

本回答被提问者和网友采纳
第2个回答  2011-03-26
String a=“aaa”创建了一个String对象。对象的值是aaa
String a=new String(“aaa”)创建了2个String对象。相当于
String a1=new String();
String a=new String();
a1=“aaa”
a=a1;
需然结果值一样但是,创建过程不一样
第3个回答  2011-03-26
String a = "aaa";是字符串常量的表示,字符串常量是用“ ”括起来的字符序列,如“How are you"。字符串常量可用来直接初始化一个String对象。
String a = new String("aaa");是用String类表示字符串,String类所提供的构造方法生成一个字符串,并分配内存。
第4个回答  2019-02-25
那么String a = "aaa";创建a这个对象时,使用的是哪个构造器?
相似回答