java学习笔记之String,StringBuilder和StringBuffer

String,StringBuilder和StringBuffer

String是char[]+操作,由复制创建新对象进行操作,也就是char[]是不可变的,对象内容永不变。
StringBuilder是char[]+对此char[]数组的操作,处理当前数组不用复制重新创建,即char[]是可变的。
StringBuilder内部的char[]数组内容是可变的,如长度不够,可以利用边长算法进行维护,自动扩容长度。
StringBuffer和StringBuilder的API几乎一样,前者是由java早期提供,速度慢,线程安全,后者是java5以后提供的,速度快,非线程安全。

StringBuilder:
appent(),表示追加字符串;
insert(),表示插入字符串;
delete()表示删除;

1) StringBuilder 是变长字符序列
2) StringBuilder 方法: append, insert … 都返回当前 StringBuilder 对象本身的引用
3) 如果软件需要大量字符串处理时候建议使用 StringBuilder
4) String s = s1+s2; Java 实际上是如下代码运行:
String s=new StringBuilder(s1).append(s2).toString();
5) String s = s1+s2+s3+s4; 被优化为
String s = new StringBuilder(s1).append(s2).append(s3).append(s4).toString();
6) s += “a”;会产生两个新对象(StringBuilder, String)( 笔试题)
StringBuilder buf=new StringBuilder();
buf.append(“a”);
buf.append(“a”);

String API(字符串的常用方法)
 字符串覆盖了 equals() hashCode() toString()
 String 字符串中的字符是有序号的,从 0 开始
 这些方法如果字符串有变化就返回新的 String 对象, 不变化就返回原字符串. 如: trim()
 API 方法
 charAt()
 length()
 trim():去掉字符串首尾的空格
 toLowerCase()
 toUpperCase()
 indexOf() :返回String 对象内第一次出现子字符串的字符位置。
 lastIndexOf():同上,但是是最后一次
 endsWith():判断字符串s1是否从字符串sd开始
 startsWith():判断字符串s1是否从字符串sd结尾
 substring(int start, int end):截取str中从beginIndex开始至endIndex结束时的字符串,并将其赋值给str;
 substring(int start):截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str;
 toCharArray() 字符串和字符可以相互转换
String str = new String(new char[]{‘1’,’2’,’3’});
char[] chs = str.toCharArray();

Object类另外补充
toString()方法, 经常由系统默认调用,是活劢当前对象的文本描述
当直接打印一个对象是,默认调用该对象继承自Object类的toString()方法,我们可重写toString方法自定义输出。
equals()方法,默认比较规则是比较引用,即非引用同一对象就不相等,可重写此方法自定义。
hashCode() 方法
hashCode()方法要不 equals 方法一同覆盖( Sun 公司规定)
当两个对象 equals 比较为 true 时,应具有相同的 hashCode()值
当两个对象 equals 比较为 false 时,应具有丌相同的 hashCode()值
hashCode() 值要稳定(一致性),一个对象创建以后就丌应该再变化
默认的 hashCode()值是当前堆对象地址转换的一个整数,这个整数不是内存地址!
一般使用对象的 OID 值作为 hashCode 的值
OID 是对象的唯一编号,在项目中一般采用数据库生成 OID,也就是数据库中的“主键”
(String类已经覆盖了上面补充的方法)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值