1.
- Java code
String str=new String("abc");
2.
- Java code
String str="abc";
3.
- Java code
String a="ab"+"cd";
上面代码分别创建了几个对象?
4.有如下代码
- Java code
String a = "ab";String b = "cd";String c = "abcd";String d = "ab" + "cd";String e = a + "cd";String f = "ab" + b;String g = a + b;
如果不去调试,问d,e,f,g中那些==c?
------解决方案--------------------------------------------------------
在串池中不存在"abc"这个常量的前题下:
String str=new String("abc"); 创建了二个对象。分别在串池中和堆中。
String str="abc";只在串池中创建了一个对象。
String a="ab"+"cd";在串池中创建了三个对象。分别是:"ab","cd","abcd"。
d等于c。指向常量池中的"abcd"这个对象。
在编译期即可确定值的String对象。java编译器会进行自动优化将这些常量放入串池中。用new产生的对象会放在堆上。
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
创建了两个对象
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
6个
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d==c);
System.out.println(e==c);
System.out.print(f==c);System.out.println(" "+(f==e));
System.out.print(g==c);System.out.print(" "+(g==e));System.out.print(" "+(g==f));
ab
cd
abcd
true
false
false false
false false false
------解决方案--------------------------------------------------------
1、两个对象
2、一个对象
3、一个对象
------解决方案--------------------------------------------------------
这个面试题中经常遇到。
String对象详解参考
http://blog.csdn.net/ameyume/archive/2010/08/16/5815756.aspx
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
1.2个
2.1个
3.1个
- Java code
String a = "ab"; String b = "cd"; String c = "abcd"; String d = "ab" + "cd"; String e = a + "cd"; String f = "ab" + b; String g = a + b;
------解决方案--------------------------------------------------------