字符串即字符序列。在Java中,字符串是String类的对象。
1.字符串对象的创建
有两种方式创建字符串对象,其中最直接的创建方式如下:
String name = “James Gosling”;
上面双引号中的字符序列“James Gosling”称作字符串字面值,当代码中出现字符串字面值时,编译器会使用这个字面值来创建字符串对象。
第二种创建字符的方式和创建其他类型的对象一样,使用new关键字和String类的构造方法,如:
String name = new String(“James Gosling”);
String类有十几个构造方法,列举其中部分构造方法如下:
public String():创建一个表示空字符序列的字符串对象。
public String(char[] value):用字符数组参数作为字符串对象的内容。
public String(String original):用字符串参数作为字符串对象的内容。
public String(byte[] bytes):通过使用平台默认字符集解码指定的byte数组,构造一个新的 String。
public String(byte[] bytes, Charset charset):通过使用指定的字符集解码指定的byte数组,构造一个新的 String。
2.String类的常用方法
public int length():返回此字符串的长度,即字符个数。
public String concat(String str):返回一个新字符串,它的内容是在当前字符串后面附加上参数字符串str的内容。在编程中,经常使用“+”操作符实现与此方法相同的字符串连接功能,如:
“hello,” + “world” + “!”
将得到一个新字符串对象:
“hello,world!”
“+”操作符可以连接任何对象,如果被连接的对象不是字符串对象,则会自动调用此对象的toString()方法将它转换为字符串对象。
public static String format(String format, Object...args):静态方法,使用指定的格式字符串format和参数args返回一个格式化字符串。此方法与PrintStream 类中的printf()方法用法类似。
public char charAt(int index):返回字符串指定索引index处的字符。索引范围为从 0 到length() - 1。
public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin):将字符从当前字符串复制到目标字符数组dst中。参数srcEnd是字符串中要复制的最后一个字符之后的索引,即要复制的最后一个字符位于索引 srcEnd-1 处。
public boolean contains(CharSequence s):当此字符串包含指定的 char 值序列s时,返回true。
public boolean equals(Object anObject):判断两个字符串对象内容是否相同,若相同则返回true。(www.daowen.com)
public boolean equalsIgnoreCase(String anotherString):判断两个字符串对象内容是否相同,忽略大小写。
public byte[] getBytes():使用平台的默认字符集将此String编码为byte序列,并将结果存储到一个新的byte数组中。
public int indexOf(int ch):返回在此对象表示的字符序列中第一次出现该字符的索引,如果未出现该字符,则返回-1。
public int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引,如果它不作为一个子字符串出现,则返回-1。
public boolean isEmpty():如果 length()为0,则返回true;否则返回false。
public boolean endsWith(String suffix):判断此字符串是否以指定的后缀结束。
public boolean startsWith(String prefix):判断此字符串是否以指定的前缀开始。
public String substring(int beginIndex):返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引beginIndex处的字符开始,直到此字符串末尾。
public boolean equals(Object anObject):如果参数表示的String与当前String相等,则返回true;否则返回false。
public String trim():返回字符串的副本,忽略前导空白和尾部空白。
public String toLowerCase():转换为小写的String。
public String toUpperCase():转换为大写的String。
public char[] toCharArray():将此字符串转换为一个新的字符数组。
public int compareTo(String anotherString):如果参数字符串等于此字符串,则返回值0;如果此字符串按字典顺序小于字符串参数,则返回一个小于0的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于0的值。
public static String copyValueOf(char[] data):静态方法,返回一个String,它包含参数字符数组中的字符。如:
public static String valueOf(int i):静态方法,返回 int 参数的字符串表示形式。该方法还有一系列重载方法,如:
其都是将参数所表示类型转换为字符串类型对象。如:
public boolean matches(String regex):判断当前字符串是否匹配给定的正则表达式regex。
public String[] split(String regex):根据给定正则表达式regex将当前字符串分割为几个字符串,并以字符串数组返回。
public String replaceAll(String regex, String replacement):使用给定的 replacement 替换此字符串所有匹配给定的正则表达式regex的子字符串,返回替换后的字符串对象。
上述matches( )、split( )和replaceAll( )三个方法的参数设计正则表达式,在本节我们将其当作普通字符串,在后面正则表达式一节中将详细介绍正则表达式的知识以及上述三个方法的详细用法。
3.不可变字符串
String类是不可变字符串类,用String类创建的字符串对象的字符内容是不可改变的,前面介绍的某些String类的方法表面上好像修改了字符串对象,如public String substring(int beginIndex)、public String toLowerCase()等,实际上这些方法只是创建并返回了一个新字符串对象。
如果要对字符串进行频繁的修改操作,如频繁连接字符串,使用String类开销会很大,这种情况下就要使用可变字符串类,下面将介绍可变字符串类StringBuilder和StringBuffer,利用这两个类进行频繁的字符串连接等修改操作,相比String类,其效率会大幅提高。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。