JAVA中StringBuffer与StringBuilder、String的区别是什么?
String是对象不可变的(因为它的原理是一个final修饰的字符数组),而StringBuilder和StringBuffer是对象可变的,它们两个都继承AbstractStringBuilder类。从线程安全角度考虑,String是对象不可变的,显然线程安全。
String类:java.lang.String类,不属于8种基本数据类型,String是一个对象,表示字符串常量。因为对象的默认值是null,所以String的默认值也是null,但它又是一种特殊的对象,有其他对象没有的特性。
StringBuffer与StringBuilder的区别主要是前者是线程安全的,就是说它是同步的;后者不安全,不是同步的,其它的区别不大。
StringBuffer String StringBuffer Java.lang.StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。
内存中创建了两个String对象。StringBuilder和StringBuffer是可变的,创建了这两种对象后可以在任何位置插入,删除,修改当中的字符。StringBuilder和StringBuffer的区别是:StringBuilder是线性不安全的,StringBuffer是线性安全的。
String:字符串,如:hello world,定义好后是不可变对象 StringBuilder:可以改变对象内容,如果要需要改变字符串对象,建议使用 StringBuffer:Java.lang.StringBuffer 线程安全的可变字符序列。
JAVA中关于StringBuilder问题
StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。
有可能是JDK环境问题,StringBuilder是JDK5中新加入的类,如果你使用的是JDK4或更老的版本,就会提示没有这个类。
StringBuffer是一个用于存放动态存放字符串数据的类,他继承自java.lang.AbstractStringBuilder这个类。所谓动态存放是指:你无需考虑StringBuffer大小的问题。
不会冲突,一个是当前类的定义的 toString() 方法,另一个是 StringBuffer 类定义的 toString() 方法。
for(int j=0;iw;j++){ sb.append(*);} 这是个死循环,按你输入的6 7,那么当i=0的时候就开始死循环了。
java中StringBuilder的长度问题
StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。此值称为该对象的容量,不应将它与当前 StringBuilder 对象容纳的字符串长度混淆在一起。
StringBuffer的底层是利用它的父类(AbstractStringBuilder)内部的一个默认长度为16的字符数组来存放数据的。
如果文本(字符串)不会改变就用String类,因为String对象是不可变的。如果文本(字符串)可以改变并且在单线程中访问,使用StringBuilder。如果文本(字符串)可以改变并且在多线程中访问,使用StringBuffer。
StringBuilder:字符串变量(非线程安全)。在内部,StringBuilder对象被当作是一个包含字符序列的变长数组。java.lang.StringBuilder是一个可变的字符序列,是JDK0新增的。
StringBuilder:字符创变量 从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。
sb2 是你你new的一个StringBuilder的对象, 也就是这个对象sb2可以调用StringBuilder类的方法。他不是一个数组。没有长度一说。 比如说 奥迪车是一个类 而奥迪A6是奥迪车类的一个具体的对象。
java中的StringBuilder有什么用?
1、Java中append方法的作用是在一个StringBuffer对象后面追加字符串。例如StringBuffer s = new StringBuffer(Hello);s.append(World);则s的内容是HelloWorld。
2、如果文本(字符串)不会改变就用String类,因为String对象是不可变的。如果文本(字符串)可以改变并且在单线程中访问,使用StringBuilder。如果文本(字符串)可以改变并且在多线程中访问,使用StringBuffer。
3、StringBuilder类StringBuilder类是从 JDK 5 开始新增的,此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。
4、java.lang.StringBuilder是一个可变的字符序列,是JDK0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。
5、字符串StringBuilder有什么用处?StringBuilder可以使用可变字符串操作,这将提高字符串性能。在StringBuilder类别中,也有一些类似的方法,如上面String类别中描述的indexof(char)。
6、java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题。现在总结一下,看看他们的不同与相同。