String s = new String("aa") 创建了几个对象?
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个。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步