黑马程序员-String那点事


---------------------- android培训java培训、期待与您交流! ----------------------

1. “==”相等性的比较:

1)对于原生数据类型来说,比较的是左右两边的值是否相等。

2)对于引用类型来说,比较左右两边的引用是否指向同一个对象,或者说左右两边的引用地址是否相同。

2.当打印引用时,实际上会打印出引用的所指对象的toString()方法返回值,因为每个类都是直接或者间接继承了Object,而Object类中定义了toString()方法,因此每个类都有toString()这个方法。

3.equals()方法:

该方法定义在Object类当中,因此Java中所有的类中都有该方法,对于Object类的equals方法来说,它是判断调用equals方法的引用与传递来的引用是否一致,即这两个引用是否指向同一个对象,对于Object类来说它等价于“==”。

 

4.对于String类的equals()方法来说,它是判断当前字符串与传递来的字符串内容是否一致。

 

5.对于String对象的相等性判断来说,请使用equals()方法,而不是使用“==”,因为一般判断内容是否一致,而不是指向同一个对象。

6.String是常量,其对象一旦创建完毕就无法改变。当使用“+”连接时,会生成新的String对象,而不是向原来的String对象追加内容。

7.StringPool(字符串池):

String str = "aaa";(采用字面值赋值) 

1)查找StringPool中是否存在"aaa"这个对象,如果不存在,则在StringPool中创建一个"aaa"对象,然后将StringPool中的这个"aaa"对象的地址返回来赋值给变量str。这样str会指向StringPool中的这个"aaa"字符对象。

2)如果存在,则不创建任何对象,直接将StringPool中的这个"aaa"对象的地址返回来赋值给str引用。

  String str = newString("aaa");

1)首先在StringPool中查找有没有"aaa"这个字符串对象,如果有,则不在StringPool中再去创建"aaa"这个对象,直接在堆中(heap)创建一个"aaa"字符串对象,然后将堆中的这个"aaa"对象的地址返回来赋值给str引用,导致str指向了堆中的这个"aaa"字符串对象。

2)如果在StringPool中没有,则首先在StringPool中创建一个"aaa"对象,然后再在堆中创建一个对象。然后将堆中的这个"aaa"对象的地址返回来赋值给str引用,导致了str指向了堆中所创建的这个"aaa"对象。

---------------------- android培训java培训、期待与您交流! ----------------------详细请查看:<a href="http://edu.csdn.net/heima"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值