---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
一、String类
1、由于String类是final的,它的值一经创建就不可改变
2、
String s1 = "abc"; //创建了一个对象
String s1_1 = "abc" ,String s1_2 = "abc"; //总共也只创建了一个对象
String s2 = new String("abc"); //创建了两个对象
String s3 = "ab"+"c"; //创建了三个对象
执行过程解释如下:
第一个语句,首先去字符串池中找是否有abc这个对象,没有,在字符串中创建了一个abc对象
第三个语句,先去也字符串池中找是否有abc找个对象,有,不新建,然后执行new语句,把abc拷贝到堆内存中
第四个语句,首先去字符串池中找是否有ab和c两个对象,没有,在字符串池中创建了两个对象,因为+,所以两个对象又合成了一个对象abc,这时候又去字符串中找,有,直接把abc拷贝到堆内存中
二、StringBuffer和StringBuilder
代码:
StringBuffer sb = new StringBuffer();
StringBuffer sb1 = sb.append(34);
print(sb.toString()); //结果一样
print(sb1.toString()); //结果一样
解释:
创建一个StringBuffer容器,容器名称叫sb,往该容器里面添加了一个整数34,但是sb和sb1都还是指向该容器来,内部的数据变化不会影响地址
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.youkuaiyun.com