Stirng str1 = new String("abc");Stirng str2 = new String("abc");创建了几个对象

今天下午看群里有人讨论这个问题,好吧.的确快忘记这个知识点了.

 

Stirng str1 = new String("abc"); 

Stirng str2 = new String("abc");

这里产生了3个对象:

第一个是new 创建的new String();

第二个是"abc"对象,str1这个变量指向"abc";

第三个是第二句的new String();

如果再来一句:String str3 = "abc", 则没有创建新的对象,还是3个对象,因为第一没有用new去创建新的实例,第二它会找字符串池里的"abc",如果有责指向它,没有的话才创建;

  解释下字符串池:他是一个由字符组成的一个数组就相当于char str1 =new char[]{a,b,c};  如果不是遇到新的字符串,则直接指向原来的串池,如果遇到新的字符串则创建一个新的串池,个人以为因为java基本类型中中没有String类型,所以当出现新的字符串的时候需要以上面char 类型来创建一个数组对象。

 

转载于:https://www.cnblogs.com/mohe/archive/2013/04/08/3008436.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值