String、StringBuffer、StringBuilder之间的区别

String 类:

注意点:

(1) equals(Object anObject)方法和contentEquals(CharSequence cs)的不同是:设计不同,equals()是重写object类的而contentEquals()是String类自身的;

(2) StringStringBufferStringBuilder之间的区别: 

  1. String类表示的是不可变的字符串,只有通过不断的创建对象来来达到改变数值的目的,耗内存,效率低;
  2. StringBuffer表示线程安全的可变序列,安全的用于多线程;
  3. StringBuilder类提供了与StringBuffer兼容的API,但不保证同步(指线程同步)。被单个线程使用的时候建议优先使用该类,一般它比StringBuffer要快;
  4. String类重写了equals()方法,而StringBufferStringBuilder没有重写;
  5. 三者都重写了toString()方法,但是重写的方式不同,String返回的是当前String实例的引用,StringbufferStringBuilder返回的是一个当前对象缓冲区中所有字符内容的新的String对象;

 

// 创建一个字符串的对象,String是一个比较特殊的引用类型

// 第一种方式

String name = "admin"; // admin的对象,保存在常量池中。

// System.out.println(name.hashCode());

// 第二种方式

String newName = new String("guest");// 保存在堆内存中。

// String类的对象是不可修改(修改就是保证地址一致,内部不同)的。

name = "张三";// 这是重新引用了一个全新的字符串对象。

// System.out.println(name.hashCode());

// 对于String类的对象就没有修改的操作,只是重新的引用了一个对象,改变的地址。

System.out.println(name + "......." + newName);

// 为什么String类的对象不可以修改。

// 见源码: private final char value[];

// value是不可能完成动态数组的实现了。并不是因为是final修饰的原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值