java String类型总结

 总结昨天遇到的一个String类型的知识
在记录题目之前先补充几个知识点
1.String a=“abc”;与string b=new String("abc");
此时的变量a、b两个对象不相等。  a==b不成立 但是 a.equal(b)成立  
并且无论a,b的定义位置如何,都不会影响到该结论
2.String a="abc";
String b=new String("abc") 新建一个对象,中间有一个对象的问题。由对象引用指向字符串常量池中的某一个字符串
String c=a;          将字符串常量池中的某个字符串地址赋给变量c。注意中间没有对象池的问题。
String d=b;        将对象池中的对象引用赋给变量d    注意这个赋值不直接涉及到字符串常量池
String e="a"+"bc";     在编译的过程中就已经将其便以为字符串abc ,相当于直接把字符串abc赋值给变量e
String f="a";
String h=f+"bc";        相当于  new StringBuffer().append("a").append("bc").toString();   注意此时已经新建了一个StringBuffer对象
a、b、c、d、e、h几个对象之间的equal  成立(成立的意思是两两之间的equal的值为true)
对于==      说明  
a!=b              新建的对象跟原来的对象不一样。
c==a        
d==a
d!=a
e==a
h!=a
3.intern()  粗略说明一下
当a.intern()时,当字符串常量池中存在变量a对象的字符串时,返回字符串常量池中的字符串;如果不存在该字符串,则将此对象添加到字符串常量池中,并返回刚添加的字符串对象的引用 
假设字符串常量池中存在字符串"number",不存在字符串"number1";
如果变量 a  String  a="number";   则a直接取自字符串常量池中的字符串number ,并返回的是字符串的引用赋值给变量a  。(假设  String a= "number1";  则需要在字符串常量地址池中添加一个字符串number1,变量a 等于新添加的字符串number1的引用)
变量 b   String b=new String("number");
当变量c   String c=a.intern();     由于变量a已经定义并赋值,a.intern()会返回字符串常量池中的字符串“number”。
当变量d   String d="number1".intern();由于字符串常量池中不存在字符串number1,所以会先把字符串number1存入字符串常量池中,然后,把刚添加的字符串number1返回   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值