A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沐子松/kf 中级黑马   /  2014-6-13 11:47  /  896 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.String
s1 = "h"
s2 = "h"
s1 == s2 为true,"h"存储在数据区,s1,s2虽然是引用变量,可是指向同一块区域
s1 = new String("h");
s2 = new String("h");
s1 == s2 为false,因为是new出来的,两个"h"在堆内存区域占两块区域
这也体现了堆内存区域和数据区域的区别,数据区如果是相同的值不会重新开辟区域,更优化
s1.equals(s2) 为true,object的equals方法比较的是两个变量的引用地址,而String重写了equals方法,优化之后,比较的是引用变量所指向的值

String的常用方法

public String[] split(String regex)


2.StringBuffer
String是不可变的字符序列,而StringBuffer是可变的
s1 = s1 + s2,在内存中重新开辟一块区域,将s1,s2的内容分别放进这块内存,组合成一串字符序列,然后再让s1指向它,这是一个静态的过程
StringBuffer则不同,初始化16个字符,当原来的空间不足时,动态扩大容量


7 个回复

倒序浏览
非常给力的帖子~
回复 使用道具 举报
赞一个!
回复 使用道具 举报
    过来多学习学习的
回复 使用道具 举报
过来看看。
回复 使用道具 举报
赞一个,总结的不错
回复 使用道具 举报
这个是不是写错了?还是我理解的有误·····{:2_45:}
回复 使用道具 举报
梦里花落 发表于 2014-6-13 20:04
这个是不是写错了?还是我理解的有误·····

额, 记住方法就好了,那只是一个变量
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马