Java String类

来源:互联网 发布:知乎精彩问题 编辑:程序博客网 时间:2024/06/06 17:39

String  s1=”abc” ;

String  s2=new String(“abc”);

s1是一个类类型变量,”abc”是一个对象;

s1在内存中有一个对象

s2在内存中有两个对象

字符串最大的特点:一旦被初始化就不可以被改变。

 

常见的操作:

1.     获取

1.1字符串中包含的字符数,也就是字符串的长度。intlength();获取长度

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

1.3 根据字符获取该字符在字符串中的位置 int indexof(int ch);返回的是ch在字符串中第一次出现的位置。也可以用来判断指定字符串中是否包含某字符。

2.判断

2.1 字符串中是否包含某一个子串

   boolean  contains(str);

2.2字符串是否有内容

  boolean  isEmpty() 原理:判断字符串长度是否为0

2.3 字符串是否是以指定内容开头

    boolean  startWith(str);

2.4 字符串是否是以指定内容结尾

    boolean  endWith(str);

2.5 判断字符串内容是否相同,复写了Object类中的equals()方法

   boolean  equals(str);

2.6 判断内容是否相同,并且忽略大小写

   boolean  equalsIgnoreCase();

3.转换

      3.1 将字符数组转成字符串,

构造函数:String(char[] ) ;String(char[] ,offset,count):将字符数组中的一部分转成字符串.

静态方法:static String copyValueOf(char[] );

        static String  copyValueOf(char[]data,int offset, int count)

        static String valueOf(char[]);

      3.2将字符串转成字符数组

         char[] toCharArray();

      3.3 将字节数组转成字符串

        static String  copyValueOf(byte[]);

        static String  copyValueOf(byte[]data,int offset, int count)

 

      3.4 将字符串转成字节数组

          byte[]  getByted();

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

          static String valueOf(int)

          static String valueOf(double)

4.替换

   String replace(oldchar,newchar); 如果要替换的字符串不存在,则返回原字符串

5. 切割

   String[] split(regex);

6.子串:获取字符串中的一部分

  String substring(begin); //从指定位置到结尾

  String substring(begin,end);//包含头,不包含尾

7.转换,去除空格,比较

  7.1 将字符串转成大写或小写

      String toUpperCase();

      String toLowerCase();

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

      String trim();

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

       int compareTo(string);

 

StringBuffer(字符串缓冲区)的特点:

  字符串的组成原理就是通过该类实现的

  StringBuffer可以对字符串内容进行增删

  StringBuffer是一个容器

  很多方法与String相同

  StringBuffer是可变长度的

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

  最终会同过toString方法变成字符串

1.     存储:

StringBuffer  append() : 将制定数据作为参数添加到已有的数据结尾处。

StringBuffer  insert(ndex,数据)  : 可以将数据插入到制定index位置

2.     删除

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

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

3.     获取

char charAt(int index)

int indexOf(String str)

int lastIndexOf(String str)

int length()

String substring(int start , int end)

4.     修改

StringBuffer replace(start,end,string);

void setCharAt(int index,char ch);

5.     反转

StingBuffer reverse();

 

StringBuffer: 是线程同步的,但效率低

StringBuilder: 是线程不同步的,但效率高

 

升级的三个要素:提高效率;简化书写;提高安全性

 

基本数据类型对象包装类

byte    Byte

short    Short

int     Integer    

     long    Long

boolean  Boolean

float      Float

double    Double

char      Char

基本数据类型对象包装类最常见作用,就是用于基本数据类型和字符串类型之间做转换

基本数据类型转成字符串:

1.    基本数据类型+””

2.     基本数据类型对象包装类.toString(基本数据类型值);

如:Integer.toString(34);  //将34整数变成”34”;

字符串转成基本数据类型:

  xxx  a =Xxx.parseXxx(String);

  int a=Integer.parseInt(‘‘123’’)

进制转换 :

 Integer.parseInt(string,radix) ;参数radix指定要转成的目的进制数

 

Integer x=new Integer(4) ;

Integer x=4 ; //自动装箱(new Integer(4)),等同于Integer  x=new Integer(4) ;

x=x+2 ; //x进行自动拆箱(x.Value),变成了int类型,和2进行加法运算,再将和进行装箱赋给x

 

Integer m=128 ;

Integer n=128 ;

sop(m==n);输出false

Integer a=127 ;

Integer b=127 ;

sop(a==b);输出true,因为a和b指向了同一个Integer对象。

因为当数组在byte范围内,对于新特性如果该数值已经存在,则不会再开辟新空间。