java-Java中string和stringbuffer有什么区别???

问题描述

Java中string和stringbuffer有什么区别???

Java中string和stringbuffer有什么区别???求各位前辈指点

解决方案

String,StringBuilder,StringBuffer都实现了CharSequence接口.
Java中的String是不可变的,即它本身没有提供改变自身的方法,它的看似改变的方法都是返回一个新的字符串,在多个字符串(含变量)做连接操作(即“+”)时,它内部会使用StringBuilder.append操作,最后才调用toString方法,返回一个新的字符串
StringBuilder和StringBuffer都提供了改变自身的方法,不同点是而StringBuffer中的大多数方法都是synchronized,在方法的执行过程中必须获取锁以及释放锁,而这都将影响它的性能,因此在单线程环境中或者方法内部的一般都应该使用StringBuilder

解决方案二:

就是一个变量和常量的关系StringBuffer对象的内容可以修改而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象比较StringBuffer str = new StringBuffer("a");str.append("bc");String str2 = "a";str2 = str2 + "bc";str引用的一直是同一对象而str2引用的在两句中是完全不同的对象

解决方案三:

性能上的不同,string追加字符串是非常耗费性能的。因为每次追加都需要重新开辟内存,并且复制一次先前的那个字符串。
我们知道,很多的时候,我们需要大量追加字符串,比如
for (Record : List)
{
result = result + Record["field"].toString();
}
此时用StringBuffer性能会好很多。

解决方案四:

性能上的不同,string追加字符串是非常耗费性能的。因为每次追加都需要重新开辟内存,并且复制一次先前的那个字符串。
我们知道,很多的时候,我们需要大量追加字符串,比如
for (Record : List)
{
result = result + Record["field"].toString();
}
此时用StringBuffer性能会好很多。

解决方案五:

性能上的不同,string追加字符串是非常耗费性能的。因为每次追加都需要重新开辟内存,并且复制一次先前的那个字符串。
我们知道,很多的时候,我们需要大量追加字符串,比如
for (Record : List)
{
result = result + Record["field"].toString();
}
此时用StringBuffer性能会好很多。

解决方案六:

性能上的不同,string追加字符串是非常耗费性能的。因为每次追加都需要重新开辟内存,并且复制一次先前的那个字符串。
我们知道,很多的时候,我们需要大量追加字符串,比如
for (Record : List)
{
result = result + Record["field"].toString();
}
此时用StringBuffer性能会好很多。

解决方案七:

变量与常量区别:String是内容不可变的,一旦改变会产生新的对象,StringBuffer是内容可变的
String str=“abc”;
str+="d";(结果:abcd产生新的对象而不是原有那个String对象,开辟新的内存空间)
StringBuffer sb = new StringBuffer(“abc”);
sb.append(“d”);(结果:abcd 还是原来那个对象,不会开辟新的内存空间)

解决方案八:

在Java中内存中有常量池,当改变string的值时先会去常量池中查找看有没有如果有则直接将引用到这个对象,而如果不存在,而常量池中已存在的字符可以组成所需的String对象则组成String对象,
String这个引用变量引用到这个组合成的对象,如果常量池中没有则才会生成一个改变后的对象,同时引用到这个变量,所以可以说String引用变量的值是不能改变的
因为只要以改值也就可能会生成一个新对象,而StringBuffer 是一个可以改变内容的变量,你改变之后指向的还是原来那个对象,也就是引用变量的值没变!

解决方案九:

简单的字符串赋值之类 的用String就好,如果 是大量的字符串拼接,StringBuffer效率更高。

解决方案十:

就是一个变量和常量的关系StringBuffer对象的内容可以修改而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象比较StringBuffer str = new StringBuffer("a");str.append("bc");String str2 = "a";str2 = str2 + "bc";str引用的一直是同一对象而str2引用的在两句中是完全不同的对象

时间: 2024-11-08 19:37:41

java-Java中string和stringbuffer有什么区别???的相关文章

stringbuilder-java中String 和StringBuffer有什么区别

问题描述 java中String 和StringBuffer有什么区别 java string stringbuf区别是啥呢 还有stringbuilder 怎么用 解决方案 在java中有3个类来负责字符的操作. 1.Character 是进行单个字符操作的 2.String 对一串字符进行操作.不可变类. 3.StringBuffer 也是对一串字符进行操作,但是可变类. String: 是对象不是原始类型. 为不可变对象,一旦被创建,就不能修改它的值. 对于已经存在的String对象的修改

JAVA中String与StringBuffer有什么区别

String和StringBuffer的区别,网上资料可以说是数不胜数,但是看到这篇文章,感觉里面做的小例子很有代表性,所以转一下,并自己做了一点总结. 在java中有3个类来负责字符的操作: 1.Character 是进行单个字符操作的. 2.String 对一串字符进行操作,不可变类. 3.StringBuffer 也是对一串字符进行操作,但是可变类. String: 是对象不是原始类型. 为不可变对象,一旦被创建,就不能修改它的值. 对于已经存在的String对象的修改都是重新创建一个新的

深入剖析java中String、StringBuffer、StringBuilder的区别_java

java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1. 可变与不可变 String类中使用字符数组保存字符串,如下就是,因为有"final"修饰符,所以可以知道string对象是不可变的. private final char value[]; StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在

Java中String、StringBuffer、StringBuilder的区别介绍_java

java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1.可变与不可变 String类中使用字符数组保存字符串,如下就是,因为有"final"修饰符,所以可以知道string对象是不可变的. private final char value[]; StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在A

Java中String、StringBuffer、StringBuilder的区别详解_java

 java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1.可变与不可变 String类中使用字符数组保存字符串,如下就是,因为有"final"修饰符,所以可以知道string对象是不可变的. private final char value[]; StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在

java中String、StringBuffer、StringBuilder的区别

java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1.可变与不可变 String类中使用字符数组保存字符串,如下就是,因为有"final"修饰符,所以可以知道string对象是不可变的. private final char value[]; StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在A

java字符串连接String、StringBuffer和StringBuilder

Java字符串连接再开发中随时用的,方法很多: 先看下下边的代码: package com.meiyabaike.classx; public class ClassxMathCalculate { public static void main(String[] args) { int i1 = 10; int i2 = 20; System.out.println("resultx1 :"+i1+i2); //Error: the operator - is undefined f

string stringbuffer-java中string和stringbuffer的区别

问题描述 java中string和stringbuffer的区别 package om.yuanguang; public class TestString { public static void main(String[] args) { StringBuffer s0 = new StringBuffer("A"); StringBuffer s1 = new StringBuffer("B"); comp(s0,s1); System.out.println

String、StringBuffer、StringBuilder区别

无论是做Java或是Android,都避免不了遇到这个问题,其实开发过程中一般情况下是不会纠结,这个问题是面试必选经典题,今天有时间,就总结一下. String.StringBuffer.StringBuilder区别 StringBuffer.StringBuilder和String一样,也用来代表字符串.String类是不可变类,任何对String的改变都 会引发新的String对象的生成:StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象.既然可变和不可变都