stringstringbuffer与stringbulder区别

Posted 北方阿木

tags:

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

 

1、  字符串是一个特殊的对象,它一旦被初始化,就不可以被改变,不能有子类,所以String中的方法都不能被复写;

2、  字符串有两种赋值方式

1)  String s1 = “abc”;  ——在内存中只有一个对对象。

2)  String s2 = new String(“abc”);——在内存中有两个对象,”abc”是一个对象,new又创建了一个对象。

3、  equals方法

Object中的equals方法是用于比较两个对象的地址的,String类中重写了该方法,使得其比较的是具体的对象的值。

 

 

第二讲字符串常用功能

1、  字符串在内存中的特性

               

2、  操作字符串的方法

2.1 读取方法

l  int length()——获取字符串长度;

l  char charAt(int index)——根据位置获取位置上某个字符;

l  int indexOf(int ch)——返回ch在字符串中第一次出现的位置;

l  int indexOf(int ch,int fromIndex)——从fromIndex指定位置开始,获取ch在字符串中第一次出现的位置;

l  int indexOf(String str)——返回str在字符串中第一次出现的位置;

l  int indexOf(String str,int fromIndex)——从fromIndex指定位置开始查找,返回str在字符窜中第一次出现的位置;

l  int lastIndexOf(int ch)——返回ch自字符串中最后一次出现的位置

2.2   判断操作

l  boolean contains(str)——判断字符串中是否包含str;

l  boolean isEmpty();——判断字符串中是否有内容。其原理是判断字符串长度是否为0;

l  Boolean startsWith(str)——判断字符串是否以str开头。

l  Boolean endsWith(str)——判断字符串是否以str结尾。

l  Boolean equals(str)——判断字符串内容是否相同。Object类中的equals方法。

l  Boolean equalsIgnoreCase(str)——判断内容是否相同,并且忽略了大小写。

2.3   字符串与其他数据类型互相转换

l  将字符串转成字符串:

方法一:构造函数方法

String(char[] ch )

String(char[] ch,int offset,int count)——将字符串数组中的一部分转成字符串。

                             方法二:静态方法

                                               Static String copyValueOf(char[] ch)

                                               Static String copyValueOf(char[] , int offset, int count)

l  将字符串转成字符数组

Char[]  toCharArray();

l  将字节数组转成字符串——构造函数方法实现

String(byte[] b);

String(byte[] b,int offset , int count)

l  将字符串转成字节数组

Byte[]  getBytes();

特殊情况:字符串和字节数据在转换过程中,可以指定编码表。

l  将基本数据类型转成字符串

Static String valueOf(int i)——将int类型数据转成字符串

Static String valueOf(double d)——将double型数据转成字符串

 

2.4   替换字符串中的某个字符

String replace(oldchar , newchar).

2.5   根据指定字符将字符串切割成多个字符串

String[] split(regex);

2.6   获取字符串中的一部分

String substring(begin)——获取字符串中从begin以后的所有字符。

String substring(begin , end)——获取字符串中从begin(包含)开始到end(不包含)之间的字符。

2.7   大小写转换,去除空格,字符串自然顺序比较

l  大小写转换

String toUpperCase()——将字符串转成大写;

String toLowerCase()——将字符串转成小写;

l  将字符串两端的多个空格去除

    String trim();

l  对两个字符串进行自然顺序比较

    Int compareTo(String);——字符串重写了Comparable接口中的compareTo方法。

练习:

1、  模拟一个trim方法,去除字符串两端的空格

思路:

1)判断字符串的第一个位置是否为空,如果是继续向下判断,直到不是空格为止;结尾处的空格判断也是如此。

2)当开始和结尾都判断到不是空格了,将前后两处之间的字符取出来,达到去除字符串两端空格的目的。

代码实现如下: 

2、  将一个字符串进行翻转。将字符串中指定部分进行翻转

3、  获取一个字符串在另一个祖父串中出现的次数

4、  获取两个字符串中最大相同字符串。

第三讲 StringBuffer

1、  概述

StringBuffer是一个容器,我们可以对容器中的数据进行增、删、改、查。当数据类型和数据个数不确定时,而且最终要变成字符串的时候,就可以用字符串缓冲区。

2、  特点

1)  长度可以变化;

2)  可以直接操作多个数据类型;

3)  最终会通过toString方法变成字符串;

3、  功能

1)  存储

StringBuffer append()——将指定数据作为参数添加到已有数据结尾处

StringBuffer insert(index,数据)——将数据插入到指定的位置(index);

2)  删除

StringBuffer delete(int start,int end)——删除缓冲区中的数据,包含start,不包含end;

StringBuffer deleteCharAt(index)——删除指定位置的字符

3)  获取

Char charAt(int index);——返回指定位置处的字符

Int indexOf(String str)——查找字符串str在容器中第一次出现的位置

Int lastIndexOf(String str)——查找字符串str在容器中最后一次出现的位置

Int length()——获取容器的长度

String substring(int start, int end)——获取缓冲区中从start(包含)到end(不包含)的数据。

4)  修改

StringBuffer repace(start,end,String)——利用string替换容器中从start(包含)到end(不包含)的数据。

Void setCharAt(int index, char ch)——将缓冲区中index位置处的数据替换成ch。

5)  反转

StringBuffer reverse();

 

 

4、  StringBulder与StringBuffer

StringBulder是jdk1.5版本之后才出现的,为了提高单线程运行效率。它与StringBuffer的区别如下:

1)  StringBuffer是线程同步的,即,多线程调用时,对缓冲区中数据的操作代码是同步的;而StringBulder是不同步的。

2)  StringBulder不需要判断锁(因为不同步),提高了运行效率,在单线程下建议使用StringBulder,多线程下建议使用StringBuffer。

总结

1、String和StringBuffer区别

1)String和StringBuffer都有对字符串进行增删改查等操作;

2)String长度和内容都不可变,StringBuffer长度和内容都可变;

3)StringBuffer有反转功能;

2、StringBuffer和StringBuilder的主要区别

         1)StringBuffer线程同步,StringBuilder线程不同步;

         2)StringBuffer效率较低,StringBuilder效率较高;

         3)多线程时使用StringBuffer,单线程时使用StringBuilder;

 

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

StringStringBuffer与StringBuilder之间区别

StringStringBuffer与StringBuilder之间区别

StringStringBuffer与StringBuilder之间区别

StringStringBuffer与StringBuilder 复习回顾总结

转载StringStringBuffer与StringBuilder之间区别

StringStringBUffer和StringBuilder的区别与使用