欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

String字符串类总结

程序员文章站 2022-04-09 08:34:09
object类 int hashCode() Object定义的hashCode方法能为不同对象返回不同的整数。实际上是把JVM给对象分配的地址转化为整数,确保了逻辑上的唯一性。而转化的散列算法,可能会把两个地址算出同一个值来(低概率),所以,hash值一样的对象不一定是同一个对象,但是地址相同的对 ......

object类

int hashcode()

object定义的hashcode方法能为不同对象返回不同的整数。实际上是把jvm给对象分配的地址转化为整数,确保了逻辑上的唯一性。而转化的散列算法,可能会把两个地址算出同一个值来(低概率),所以,hash值一样的对象不一定是同一个对象,但是地址相同的对象,肯定是同一个对象。

boolean equals(object obj)

==和equals的区别

==对于基本类型来说,比较的是数值,对于引用类型来说比较的是引用的地址。

equals不能用来比较基本类型,比较引用类型默认比较的都是地址

在string中的equals比较过程,先比较地址、然后比较数据类型、再将字符串拆成字符数组,进行循环对比。只要有一个环节比较不匹配就直接输出false,结束比较。

string tostring()

在输出的语句中,直接输出一个对象,默认输出方法就是tostring方法。如果没有此方法,输出的只是对象的地址。父类object的tostring方法,并不满足所有子类。所以需要重写。当然基本的封装类,jdk里面都写好了。所以我们输出的时候不用写这个方法,系统默认自带tostring。

protected object clone()

克隆对象,克隆出来的对象是独立存在的,有自己的内存空间。

protected void finalize()

垃圾回收机制的调用,但是具体什么时候回收,就不确定了。随机回收。

 

string

 

string是一个final修饰的类,不可继承。并且“xyz”这样的字符串面值常量也是string对象,也可以使用string类的成员方法。string类创建好了,就是确定好了内存,不可再次修改,只能重新开辟内存空间重新引用。频繁的操作字符串,会在常量池累积大量的字符串,这样就使用字符串缓冲区。

字符串缓冲区【stringbuffer/stringbuilder】支持对字符的动态、可变操作。

string的构造方法

public string()

public string(string)

public string(char[] value)

public string(char[] value, int offset, int count)

public string(byte[] bytes)

public string(byte[] bytes,int offset,int length)

string类的成员方法

char charat(int index)  将指定索引的字符,返回char类型

int indexof(int ch)     int indexof(string str)

int indexof(int ch, int fromindex)  int indexof(string str, int fromindex)

从开头、或者指定索引位置检索整型数值或字符串,并把索引值以int型返回,如果没有检索到,就会返回-1

int lastindexof()   用法,重载同上,不同的是检索顺序是逆序检索。

string substring(int start) string substring(int start,int end)  从指定索引位置或者指定索引区域开始截取字符串,返回一个string类型(就是截取的部分),注意截取区域是左闭右开原则。

int length()   返回一个int类型的字符串长度。

boolean isempty()  判断字符串是否为空

boolean equals(object obj)  将指定字符串内容与指定对象比较,区分大小写。

boolean equalsignorecase(string str)  将此字符串与另一个字符串str比较,忽略大小写。

boolean contains(string str)  判断字符串中是否包含方法传入的字符串。

boolean startswith(string str)  判断字符串是否以某个指定的字符串开头

boolean endswith(string str)  判断字符串是否以某个指定的字符串结尾

byte[] getbytes()  将字符串转化为字节数组。

char[] tochararray()  将字符串转换为字符数组

static string valueof(char[] chs)    static string valueof(int i)   将字符数组类型和整数类型转型成字符串形式。用法string.valueof(xxx)

string replace(char old,char new)   替换功能。

string replace(string old,string new)   替换功能。

string trim()  去除字符串两空格。

int compareto(string str)   按字典顺序比较两个字符串。

int comparetoignorecase(string str)  按字典顺序比较两个字符串,忽略大小写。

public string[] split(string regex)  分隔字符串成字符数组。

stringbuffer()

      构造一个没有字符的字符串缓冲区,初始容量为16个字符。 

      stringbuffer(charsequence seq)

      构造一个包含与指定的相同字符的字符串缓冲区 charsequence 。 

      stringbuffer(int capacity)

      构造一个没有字符的字符串缓冲区和指定的初始容量。 

      stringbuffer(string str)

      构造一个初始化为指定字符串内容的字符串缓冲区。

      增 :

            stringbuffer append(string str) 将字符串str拼接到末尾

            stringbuffer insert(int offset, string str)将字符串str拼接到指定位置

      删 :

            stringbuffer deletecharat(int index) 删除指定位置的字符

              stringbuffer delete(int start, int end) 删除指定区域的字符(左开右闭)

      改:

      public stringbuffer replace(int start,int end,string str)将指定区域的字符串替换成字符串str

      其他:

            public stringbuffer reverse() 颠倒字符串

            public string substring(int start)从指定位置开始截取字符串

            public string substring(int start,int end)截取指定区域的字符串

string,stringbuffer,stringbuilder三者的区别

           三者本质都是字符序列,string字符序列不支持对字符直接修改,stringbuffer和stringbuilder是字符缓冲区,可变的字符序列。stringbuffer线程安全效率不高、stringbuilder线程不安全效率高。