03 字符串--基础

 

1.String s = new String("abc");//此时内存有两个对象:StringPool里"abc",堆空间:new String("abc")

   String s1 = "abc";//因StringPool里已经有“abc”对象,所以不会再产生,此时内存有两个对象

   String s2 = new String("abc");//堆空间会新增一个对象,此时内存有3个对象

 

 

2.System.out.println(s == s1);//==比较的是两个对象的内存地址 false

   System.out.println(s == s2);//false

   System.out.println(s1 == s2);//-------doc 1//false

 

3.//s.intern(),首先查看StringPool里是不是有一个和s内容相等的字符串,如果有,则返回StrigPool里的这个字符串

   //如果没有,则将字符串S添加到StringPool里,并返回一个对S的引用

   //s.intern()返回的永远是StringPool里的字符串

   System.out.println(s == s.intern());//false

   System.out.println(s1 == s1.intern());//true

   System.out.println(s2 == s2.intern());//false---doc 2

   String sItern = "ok";

   System.out.println(sItern == sItern.intern());//true

 

4.String hello = "hello";

   String hel = "hel";

    String lo = "lo";

   //两个字符串进行加号连接时,连接完后,首先会到StringPool里查看有没有和自己内容相等的字符串

   //如果有,如果有则返回StringPool里的字符串,没有,则将自己添加进StringPool,并返回对自己引用

   //StringPool(DataSegment存储空间)里永远只有一个内容相等的字符串

   System.out.println(hello == "hel"+"lo");//true

    //"hel"+lo,+号连接时如果其中有一个不是字面的字符串常量,则会在堆里产生一个对象

    System.out.println(hello == "hel"+lo);//false

   System.out.println("hel"+lo);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值