Java String类和StringBuffer类的区别介绍

关于java的字符串处理我们一般使用String类和StringBuffer类

那么String类和StringBuffer类的区别在什么地方呢?

  • 1、String是不可变的、StringBuffer是可变的。在程序中如果定义String s = "this is a string".那么在以后的应用中不能对s进行任何修改只能进行诸如subString等操作,如果想进行改动只能重新new一个string而不是对原来的s进行改动.而对于StringBuffer却是可以改变的,在程序中定义StringBuffer s ="This is a",对于StringBuffer可以使用append和insert等函数,如s.append("string")结果就是s="This is a string".
  • 2、String类提供了一些方法,用来进行字符串的比较。这个类实现了Object父类的equals()方法,用来比较两种字符串的值是否相等。同时还增加了equalsIgnoreCase()方法可以忽略两个字符串大小写的区别。但是StringBuffer类并没有实现Objcet类的Equals方法,所以不能用这个方法来比较两个StringBuffer类的字符串是否相等。除了用equalse方法来比较两个字符串外,还可以用==来比较字符串。与equalse方法不同的是,==不是比较两个字符串的值是否相等,而是比较几个字符串的引用是否指向同一个实例。
  • 3、StringBuffer的效率并不一定比string高,如对于String s1 ="This "+“is”+"a"+"string"和StringBuffer s2="":s2.append(""This");s2.append("is");s2.append("a");s2.append("string").测试发现前者明显比后者效率高。原因是,在定义s1时,编译时即可使得s1="This is a string",而s2需要等到运行时才能确定。
  • 4、当然了,一般情况下,StringBuffer是要比String效率高些的

与包装类相似,String类是不可以改变的,从而不能修改字符串的值,所以必须创建一个新的字符串来存放,每次都重新开辟了一个内存空间。

如果字符串较少的话我们可以使用String 类,如果文件有几百成千个字节又会怎么样呢.

相反,我们提供另一个类Stingbuffer 来对字符串进行操作。

String类常用方法:

 char charAt(int index);  返回index索引位置的字符

 int length(); 返回字符串的长度。

 String substring(int beginindex,int endindex)返回一个新的字符串,其值是beginindex索引位置到endindex索引位置。

 String trim(); 去除字符串两边的空格,并返回一个新的字符串。

 String toLowerCase(); 将字符串中的所以大写字母转换成小写字母,已有大写字母则不需要转换,并返回一个新的字符串。

 String toUpperCase();String toLowerCase(); 将字符串中的所以小‘写字母转换成小写字母,已有小写字母则不需要转换,并返回一个新的字符串。

 boolean equals(String str);本对象中的字符串与str对象字符串进行比较(区分大小写) 返回一个boolean值

 String replace(char oldChar, char newChar);将旧的字符串(oldChar)换成新的字符串(newChar)

String类方法:

主要方法

 append();向字符串末尾添加数据,而不像String类重新开辟空间存放新的内容

 insert();根据方法的重载传递不同的参数,在指定的位置对字符串进行插入子字符串。

例:

 String str = "how ";

  str += "are ";

 str +="you";

如果我们打印str的最终结果是how are you 是我们所期望的,内存里面的变化:

how

how are

how are you

String类使用重载加法运算符,在字符串表中创建新的条目,上面一共创建了三条。

当处理的字符串过多时,上面的做法就很耗费内存。

 StringBuffer str = new StringBuffer("how");

 //向str末尾添加字符串

 str.append("are ");

 str.append( "you");

将需要处理字符串交给StringBuffer类处理 ,

每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,

就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。而不是重新声明新的对象

这样的话就不会耗费内存!

到此这篇关于Java String类和StringBuffer类的区别介绍的文章就介绍到这了,更多相关Java String类与StringBuffer类内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解Java中String类的各种用法

    目录 一.创建字符串 二.字符.字节与字符串的转换 1.字符与字符串的转换 2.字节与字符串的转换 三.字符串的比较 1.字符串常量池 2.字符串内容比较 四.字符串查找 五.字符串替换 六.字符串拆分 七.字符串截取 八.String类中其它的常用方法 九.StringBuffer 和 StringBuilder 1.StringBuilder与StringBuffer的区别 2.StringBuilder与StringBuffer常用的方法 十.对字符串引用的理解 一.创建字符串 创建字符串

  • Java 关于String字符串原理上的问题

    目录 1.String 是最基本的数据类型吗? 2.字符型常量和字符串常量的区别? 3.什么是字符串常量池? 4.String str=new String("aaa")创建了几个对象? 5.字符串的 intern 方法的执行过程是怎样的? 6.String,StringBuffer,StringBuilder 的区别是什么? 7.String为什么要设计成不可变的? 1.String 是最基本的数据类型吗? 不是. Java 中的基本数据类型只有 8 个 :byte.short.in

  • 一文带你初识java中的String类

    目录 什么是字符串 字符串常见的赋值方法 直接赋值法 构造方法进行创建 字符串的比较相等 字符串常量池 字符串常量池的实例 字符串的不可变 字符串的常见操作 字符串的比较 字符串的查找 字符串替换 字符串拆分 字符串截取 总结 什么是字符串 字符串或串(String)是由数字.字母.下划线组成的一串字符.一般记为 s="a1a2···an"(n>=0).它是编程语言中表示文本的数据类型.在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数

  • Java String类的性质与比较

    目录 1.什么是String? 2.String类的构造方法 3.String类的性质 4.String之间的相互比较 1.什么是String? 首先,初学者一定要知道String是一个类,它是字符串类型,但它不属于基本数据类. 所谓字符串类型,意思就好比将字符(也就是char类型)像烤串一样串起来,列如' a '和' b '拼接起来变成"ab"(注意字符串使用双引号).' a '和' b'是字符类型也就是char类型,而" ab"则是一个字符串类型.ps:字符串可

  • Java String 拼接字符串原理详解

    首先来一道思考题: String str1 = "111111"; String str2 = "222222"; String str = str1 + str2; System.out.println(str); 很明确,上述代码输出的结果是:"111111222222",但是它工作原理是怎样的呢? 由于字符串拼接太常用了,java才支持可以直接用+号对两个字符串进行拼接.**其真正实现的原理是中间通过建立临时的StringBuilder对象

  • 一文带你认识java中的String类

    目录 什么是字符串 字符串常见的赋值方法 直接赋值法 字符串的比较相等 字符串常量池 字符串常量池的实例 字符串的不可变 字符串的常见操作 字符串的比较 字符串的查找 字符串替换 split(String regex) 字符串截取 总结 什么是字符串 字符串或串(String)是由数字.字母.下划线组成的一串字符.一般记为 s="a1a2···an"(n>=0).它是编程语言中表示文本的数据类型.在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)

  • Java 超基础讲解String的使用

    目录 1.String概述 2.特点 3.String构造方法 4.String对象的特点 5.字符串的比较 6.实现用户登录 四.总结 1.String概述 String类在java.lang包下,所以使用的时候不需要导包. String类代表字符串,Java程序中的所有字符串文字(如:"abc")都被实现为此类的实例. 2.特点 字符串不可变,他们的值创建后不能被更改 虽然String的值是不可变的,但是它们可以被共享 字符串效果上相当于字符数组(char[ ] ),但是底层原理是

  • JAVA中String类与StringBuffer类的区别

    在Java中有两种字符串的操作:String类和StringBuffer类(缓冲字符串处理类). 下面先简单的说一下两者的区别. String类和StringBuffer类都提供了相应的方法实现字符串的操作,但二者略有不同. (1) String类 该类一旦产生一个字符串,其对象就不可变.String类的内容和长度是固定的.如果程序需要获得字符串的信息需要调用系统提供的各种字符串操作方法实现.虽然通过各种系统方法可以对字符串施加操作,但这并不改变对象实例本身,而是生成一个新的实例.系统为Stri

  • Java String类和StringBuffer类的区别介绍

    关于java的字符串处理我们一般使用String类和StringBuffer类 那么String类和StringBuffer类的区别在什么地方呢? 1.String是不可变的.StringBuffer是可变的.在程序中如果定义String s = "this is a string".那么在以后的应用中不能对s进行任何修改只能进行诸如subString等操作,如果想进行改动只能重新new一个string而不是对原来的s进行改动.而对于StringBuffer却是可以改变的,在程序中定义

  • Java 基础全面讲解StringBuffer类的使用

    目录 StringBuffer类 常用方法 字符串连接 指定位置添加内容 字符串反转 替换指定范围的内容 字符串截取 删除指定范围的字符串 查找指定的内容是否存在 String与StringBuffer的区别 Java 常用类 StringBuffer类 StringBuffer类的字符串可以被改变 常用方法 方法 类型 作用 public StringBuffer() 构造 StringBuffer的构造方法 public StringBuffer append(char c) 方法 追加 p

  • Java基础类库之StringBuffer类用法详解

    StringBuffer类 String类是在所有开发项目开发之中一定会使用的一个功能类,并且这个类拥有如下功能 每个字符串的常量都属于一个String类匿名对象,并且不能修改: String类有两个常量池:静态常量池.运行常量池: String类对象实例化建议直接使用赋值的形式完成,这样可以直接将对象保存在对象池中方便下次重用: 虽然String类很好用,但是我们发现它也有弊端,就是内容不允许频繁修改,所以为了解决问题,我们提供了StringBuffer类 StringBuffer 并不像St

  • Java中关键字final finally finalize的区别介绍

    目录 1. final 1.1 final修饰属性 1.2 final修饰方法 1.3 final修饰类 2. finally 3. finalize 这三个除了长得像以外,好像没什么联系 1. final final意为“最后的”,它是Java中的一个关键字. final可以修饰属性.方法.类. 1.1 final修饰属性 从final的含义就不难理解用final修饰内容的用意.final修饰属性,就表示这个属性是“最终的”,也就是不可更改的,换成我们熟悉的名词,也就是“常量”. privat

  • Java语言----三种循环语句的区别介绍

    第一种:for循环 循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体;   } eg: class Dome_For2{ public static void main(String[] args) { //System.out.println("Hello World!"); //求1-10的偶数的和 int sum = 0; for (int i = 1;i<=10 ; i++ ) { if (i%2 ==0) { //判断语句

  • 详解Java中字符串缓冲区StringBuffer类的使用

    StringBuffer 是一个线程安全的可变的字符序列.它继承于AbstractStringBuilder,实现了CharSequence接口. StringBuilder 也是继承于AbstractStringBuilder的子类:但是,StringBuilder和StringBuffer不同,前者是非线程安全的,后者是线程安全的. StringBuffer 和 CharSequence之间的关系图如下: StringBuffer类和String一样,也用来代表字符串,只是由于StringB

  • Java详细分析String类与StringBuffer和StringBuilder的使用方法

    目录 String类基本概念 String字符串的存储原理 String类的常用构造方法 String类中常用方法 StringBuffer类 StringBuilder类 String类基本概念 String类属于引用数据类型,不属于基本数据类型. 在Java中只要是" "(双引号)中的,都是String对象. java中规定,双引号中的字符串是不可变的,也就是说"abc"自出生到死亡都不可能变成"abcd",也不能变成"ab&quo

  • JAVA基础类库之String类,StringBuffer类和StringBuilder类

    目录 引言 String类 String类构造方法 String常用方法: 简单介绍的方法 详细介绍的方法 StringBuffer/StringBuilder常用方法 StringBuffer类构造方法 StringBuffer常用方法: 总结 引言 字符串就是一连串的字符序列,Java提供了String.StringBuffer和StringBuilder三个类来封装对字符串,并提供了系列方法来操作字符串对象. String类是不可变类的: StringBuffer对象则代表一个字符序列可变

  • 详解Java中StringBuffer类常用方法

    String是不变类,用String修改字符串会新建一个String对象,如果频繁的修改,将会产生很多的String对象,开销很大.因此java提供了一个StringBuffer类,这个类在修改字符串方面的效率比String高了很多. 在java中有3个类来负责字符的操作.   1.Character 是进行单个字符操作的,   2.String 对一串字符进行操作,不可变类.   3.StringBuffer 也是对一串字符进行操作,但是可变类. public class UsingStrin

随机推荐