StringStringBufferStringBuilder之间的区别

Posted sixp512720288

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了StringStringBufferStringBuilder之间的区别相关的知识,希望对你有一定的参考价值。

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修饰的原因。

以上是关于StringStringBufferStringBuilder之间的区别的主要内容,如果未能解决你的问题,请参考以下文章