string、stringbuffer与stringbulder区别

 

一、  字符串是一个特殊的对象,它一旦被初始化,就不能够被改变,不能有子类,因此String中的方法都不能被复写;数组

二、  字符串有两种赋值方式多线程

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

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

三、  equals方法post

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

 

 

第二讲字符串经常使用功能编码

一、  字符串在内存中的特性线程

               

二、  操做字符串的方法3d

2.1 读取方法orm

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方法。

练习:

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

思路:

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

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

代码实现以下: 

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

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

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

第三讲 StringBuffer

一、  概述

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

二、  特色

1)  长度能够变化;

2)  能够直接操做多个数据类型;

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

三、  功能

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();

 

 

四、  StringBulder与StringBuffer

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

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

2)  StringBulder不须要判断锁(由于不一样步),提升了运行效率,在单线程下建议使用StringBulder,多线程下建议使用StringBuffer。

总结

一、String和StringBuffer区别

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

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

3)StringBuffer有反转功能;

二、StringBuffer和StringBuilder的主要区别

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

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

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

相关文章
相关标签/搜索