关于Java String,你知道多少?

一.String s=new String("abc");//产生几个对象 ­

答案:2个。heap中一个,String pool中一个。 ­

二.String s="abc"; ­

   String s1=new String("abc");//该条语句却只产生了一个String对象。 ­

三.String s1=new String("abc"); ­

   String s2="abc"; ­

   String s3=new String("abc"); ­

   String s4="abc"; ­

   问题:s1==s2?//false ­

        s1==s3?//flase ­

        s2==s3?//false ­

        s2==s4?//true ­

4.String hello="hello"; ­

  String hel="hel"; ­

  String lo="lo"; ­

  System.out.println(hello=="hel"+"lo");//true ­(在编译阶段就能确定)

  System.out.println(hello=="hel"+lo);//false ­(在运行时才能确定)

 

 

5.String s  = "a" + "b" + "c";产生几个对象?

很多人会认为是3,4,5个。但实际上仅产生一个对象。在String pool中的"abc"。因为s的值在编译阶段就能确定。

 

总结:java中,String通常分配在两个地方,一个地方是内存堆中,一个是Stirng pool(因为String的通用性而设计的)。弄清楚这两个方面,问题即迎刃而解。­

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值