52. String类
String类是不可变类,一个String对象所包含的字符串内容永远不会被改变。
- String 常量字符串,一旦赋值或实例化后就不可更改。
java.lang包中的String类代表字符串。Java程序中的所有字符串字面值(如"abc")都作为此类的实例来实现。字符串是常量,它们的值在创建之后不能改变,因为String对象是不可变得,所以可以共享。
对于String类对象不可更改,我是有点疑惑的,请看这篇文章
- String类常用方法
public int length()
:
返回此字符串的长度public native char charAt(int index)
:
返回指定索引处的char值,索引范围为从0到length() - 1。序列的第一个char值在索引0处,第二个> 在索引1处,依次类推,这类似于数组索引。public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin)
将字符从当前字符串复制到目标字符数组。要复制的第一个字符在索引srcBegin处,要复制的最后一个字符在在索引srcEnd - 1处,因此要复制的字符总数是srcEnd - srcBegin。要复制到dst子数组的字符从索引dstBegin处开始,并结束与索引dstBegin + (srcEnd - srcBegin)- 1。public boolean equals(Object anObject)
比较此字符串与指定的对象,当且仅当该参数不为null,并且表示与此对象相同的字符序列的String对象时,结果才为true。public boolean equalsIgnoreCase(String anotherString)
:
将此String与另一个String进行比较(不考虑大小写)。如果两个字符串的长度相等,并且两个字符串中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的。public native int compareTo(String anotherString)
:
按字典顺序比较两个字符串。该比较基于字符串中各个字符的unicode值。将此String对象表示的字符序列与参数字符串所表示的字符序列进行比较,如果按字典顺序,此String对象在参数字符串之前,则比较结果为一个负整数;如果按字典顺序,此String对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为0。compareTo方法只有在方法equals(Object)返回true时才返回0.public int indexOf(int ch)
:
返回指定字符在此字符串中第一次出现处的索引。如果在此String对象表示的字符序列中出现值为ch的字符,则返回第一次出现该字符的索引;如果此字符串中没有这样的字符,则返回-1.public int lastIndexOf(int ch)
:
从最后一个字符开始向后搜索此String,返回最后一次出现的指定字符在此字符串中的索引。如果此字>
符串中没有这样的字符出现,则返回-1。public String substring(int beginIndex)
:
返回一个新的字符串,它是此字符串的一个子字符串。该字符串始于指定索引处的字符,一直到此字符串末尾。public String concat(String str)
:
将指定字符串联到此字符串的结尾。如果参数字符串的长度为0,则返回此String对象。否则创建一个新的String对象,用来表示由 此String对象表示的字符序列和由参数字符串表示的字符序列串联而成的字符序 列.public String[] split(String regex,int limit)
: 正则表达式不懂
根据匹配给定的正则表达式来拆分此字符串。此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止。数组中的子字符串按它们在此字符串中的顺序排列,如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。limit参数控制模式应用的次数,因此影响结果数组的长度。如果该限制n大于0,则模式将被最多应用n-1次,数组的长度将不会大于n,而且数组的最后一项将包含超出最后匹配的定界符的所有输入;如果n为非正,则模式将被应用尽可能多的次数,而且数组可以是任意长度;如果n为0,则模式将被应用尽可能多的次数,数组可以有任何长度,并且结尾空字符串将被丢弃。public String replaceAll(String regex,String replacement):
使用给定的replacement字符串替换此字符串匹配给定的正则表达式的每个子字符串。public String trim()
返回字符串的副本,忽略前导空白和尾部空白。如果此String对象表示一个空字符序列,或者此String对象表示的字符序列的第一个和最后一个字符的代码都大于\u0020
(空格字符),则返回对此String对象的引用;如果字符串中没有代码大于\u0020
的字符,则创建并返回一个表示空字符串的新的String对象;否则假定K为代码大于\u0020
的第一个字符的索引,m为代码大于\u0020
的最后一个字符的索引,创建一个新的String对象,它表示此字符串中从索引K处的字符开始,到索引m处的字符结束的子字符串,就是this.substring(k,m+1)
的结果。此方法用于截去字符串从头到尾的空白。
一般的字符大于\u0020
,换行符等转义字符小于\u0020
public static String valueOf(Object obj)
:
返回Object参数的字符串表示形式。
53. StringBuffer类
java.lang
包中的StringBuffer
类表示可变字符序列。
StringBuffer
类上的主要操作是append
和insert
方法,可重载这些方法,以接收任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append
方法始终将这些字符添加到缓冲区的末端;而insert
方法则在指定的点添加字符。
StringBuilder: 线程不安全,效率高
StringBuffer: 线程安全,效率低
每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内容缓冲区数组。如果内容缓冲区溢出,则此容量自动增大。从JDK5开始,为该类补充了一个单个线程使用的等价类,即StringBuilder
。与该类相比,通常应该优先使用StringBuilder
类,因为它支持所有相同的操作,但由于它不支持同步,所以速度更快。
54. StringBuffer类的常用方法
toString()
返回此序列中数据的字符串表示形式append(boolean b)
:
将boolean参数的字符串表示形式追加到序列length()
:
返回长度(字符数)charAt(int index)
:
返回此序列中指定索引处的char值。setCharAt(int index,char ch)
:
将给定索引处的字符设置为ch。public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
将字符从此序列复制到目标字符数组dst。public String substring(int start)
:
返回一个新的String,它包含此字符序列当前所包含的字符子序列insert(int offset, String str)
:
将字符串插入此字符序列中。
55. String类和StringBuffer类下字符串的区别
String:常量字符串,一旦赋值或实例化后就不可更改。
StringBuffer:字符串缓冲区,支持可变的字符串。
如果对字符串中的内容经常进行操作,特别是内容要修改时,使用StringBuffer
;如果最后需要String
,使用StringBuffer
的toString()
方法。
56. 基本数据类型的对象类
Java的基本数据类型包括byte
,int
,short
,long
,float
,double
,char
,Java
同时也提供了基本数据类型相关的类,Java
语言用包装类来把基本类型数据转换为对象。每个Java
基本类型在java.lang
包中都有一个相应的包装类。
1,Double类和Float类
Double
类和Float
类实现了对double
和float
基本型数据的类包装
(1)Double
类在对象中包装了一个基本类型double
的值,每个Double
类的对象都包含一个double
类型的字段。
Double类的构造方法
Double (double num)
构造一个新分配的Double
类对象,它表示基本的double
类型参数。此外,该类还提供了多个方法,可以将double
类型转换为String
类型,将String
类型转换为double
类型,还提供了其他一些处理double
类型时有用的常量和方法。
(2)Float
类在对象中包装了一个float
基本类型的值,Float
类的对象包含一个float
类型的字段。
Float
类的构造方法:
Float (double value)
构造一个新分配的Float
对象,它表示转换为float
类型的参数。此外,此类提供了几种方法可在float
类型和String
类型之间互相转换,并且还提供了处理float
类型时非常有用的其他一些常量和方法。
2. Byte,Integer,Short,Long类
(1)Byte类将基本类型byte的值包装在一个对象中。
Byte类的构造方法:
Byte (byte value)
该类提供了多个方法,可以将byte类型与String类型进行互换。
(2) Integer类在对象中包装了一个基本类型int的值,Integer类的对象包含一个int类型的字段
Integer类的构造方法:
Integer (int value)
该类提供了多个方法,可以将int类型与String类型进行互换。
(3) Short类在对象中包装基本类型short的值,一个Short类的对象只包含一个short类型的字段。
Short类的构造方法:
Short (short value)
该类提供了多个方法,可以将short类型与String类型进行互换。
(4) Long类在对象中封装了基本类型long的值。每个Long类的对象都包含一个long类型的字段。
Long (long value)
该类提供了多个方法,可以将long类型与String类型进行互换。
3. Character类
Character类在对象中包装一个基本类型char的值。Character类的对象包含类型为char的单个字段。
Character类的构造方法:
Character (char value)
构造一个新分配的Character对象,用于表示指定的char值。Character类还提供了几种方法,这些方法可以直接通过类名调用,用来确定字符的类别(小写字母,数字等),并将字符从大写转换成小写,反之亦然。