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产生的对象会放在堆上。
[解决办法]
[解决办法]
创建了两个对象
[解决办法]
[解决办法]
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;
[解决办法]
有些事情建议LZ百度下 该题那些公司的正确答案大多都是:两个
可是其实这个问题答案是不确认的
如果说你在这里使用了String a = "aa";
其他地方也使用了这个 String b = "aa";
实际创建的对象就只有三个(两个引用对象 一个字符串对象 存在于常量池中)
因为字面值通常是在编译期间(还是运行时..)大概就被存储到了常量池中 所以只有三个对象
如果用String a2 = new String("aa");的话 是在堆中创建一个String对象 所以与上面的用==的结果是false(顺带一提 String有个方法是到常量池中查找该值是否存在)
另外 + 操作符实际进行的是StringBuilder的append操作 所以也是在堆中创建的对象
我个人记忆难免有误 不过你可以自己去搜索下 别把该问题想像的像面试你的人那样肤浅 有些事情仔细看看还是很有意思的
祝福俺工作顺利吧..
[解决办法]
2两个。。。。
[解决办法]
[解决办法]
1.2
2.1
3.3
[解决办法]
String str="abc";
也产生两个对象吧。
[解决办法]
三个 14楼说的对
[解决办法]
String str=new String("abc"); 创建了二个对象。分别在串池中和堆中。
String str="abc";只在串池中创建了一个对象。
String a="ab"+"cd";具体说一下:
*JVM先将字符串a做“"ab"+"cd";”处理,然后再赋值给a
*相当于:a="abcd";
所以只创建了一个对象。
*****************************************************************
答案:2、1、1
[解决办法]
每日一个的问题
http://topic.csdn.net/u/20101205/22/993a0f8b-74fb-4904-b2bd-89b5ca704bea.html?44702
[解决办法]
[解决办法]
学习了 不错
[解决办法]
三楼说对