您的位置:首页 > 其它

String s = new String("aa") 创建了几个对象?

2016-04-08 14:09 375 查看
1 最近几个同学面试的时候出现了这样一个问题
  刚听到这个题目的时候的确是不知所措:

经过网上的查找和自己的理解来解释一下这个题目的答案

答案是:2

为什么呢???

1 实现我们都知道创建实例有两种方法

  (1)一是用new来创建

  (2)二是同过放射实例来创建,(classs.newInstances)

  所以这就很好的解释了一种情况了

  第二

  对于String 类型的还有一种文本创建方式,就是下面我所说的这种

  String a="abc";

  因为String 是一个final类,JVM虚拟机在他的底层是通过一个字符串池来进行判断的,如果底层没有则创建,如果有则不在创建

  同时这种创建方式还有一个特别的地方,

  String a="bc" 是创建了一次

    String a="ab"+"cd";

  由于常量的值在编译的时候就被确定了。在这里,"ab"和"cd"都是常量,因此变量a的值在

  编译时就可以确定。这行代码编译后的效果等同于:

  Java代码

  String a="abcd";

  因此这里只创建了一个对象"abcd",并且它被保存在字符串池里了。 

  String s = new String ("ab")+"c"创建了几个对象

  创建了2个对象,new string(“ab”)将创建一个string对象;

  String s 将创建第2个string对象。

  “c”是常量在编译的时候就已经作为常量赋值了,不会创建新的对象。

  故共2个。

  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: