当前位置: 代码迷 >> J2SE >> JAVA面试题:到底创建了几个对象?该怎么解决
  详细解决方案

JAVA面试题:到底创建了几个对象?该怎么解决

热度:3100   发布时间:2013-02-25 00:00:00.0
JAVA面试题:到底创建了几个对象?

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产生的对象会放在堆上。
------解决方案--------------------------------------------------------
探讨
在串池中不存在"abc"这个常量的前题下:
String str=new String("abc"); 创建了二个对象。分别在串池中和堆中。
String str="abc";只在串池中创建了一个对象。
String a="ab"+"cd";在串池中创建了三个对象。分别是:"ab","cd","abcd"。

------解决方案--------------------------------------------------------
创建了两个对象
------解决方案--------------------------------------------------------
探讨

在串池中不存在"abc"这个常量的前题下:
String str=new String("abc"); 创建了二个对象。分别在串池中和堆中。
String str="abc";只在串池中创建了一个对象。
String a="ab"+"cd";在串池中创建了三个对象。分别是:"ab","cd","abcd"。
d等于c。指向常量池中的"abcd"这个对象。
在编译期即可确定值的Strin……

------解决方案--------------------------------------------------------
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;
------解决方案--------------------------------------------------------
  相关解决方案