由字节所组成的一串文字符号,称之为字符串,在Java中字符串可以使用String类来建构,例如您可以使用以下的方式来声明并初始一个字符串变量:
String text = "字符串的使用";
注意字符串的直接指定必须使用"",而字符串是使用Unicode字节来建构,在建构一个字符串对象变量之后,您可以直接在输出串流中指定变量名称来输出字符串,例如:
System.out.println(text);
字符串的串接在Java中可以直接使用 + 运算符,+ 本来是加法运算符,而它被重载(Override)为可以直接用于字符串的串接,例如您可以这么使用字符串:
String msg = "哈啰!";
msg = msg + "Java Programming!";
System.out.println(msg);
这一段程序码会在主控台上显示 "哈啰!Java Programming!"。
用于生成字符串对象的String类拥有几个操作字符串的方法,在这边先介绍几个常用的:
length() |
取得字符串的字节长度 |
equals() |
判断原字符串中的字节是否相等于指定字符串中的字节 |
toLowerCase() |
转换字符串中的英文字节为小写 |
toUpperCase() |
转换字符串中的英文字节为大写 |
下面这个程序介绍以上的几个操作字符串方法的使用与结果:
public class UseString { public static void main(String[] args) { String text = "hello"; System.out.println("字符串内容: " + text); System.out.println("字符串长度: " + text.length()); System.out.println("等于hello? " + text.equals("hello")); System.out.println("转为大写: " + text.toUpperCase()); System.out.println("转为小写: " + text.toLowerCase()); } }
执行结果:
字符串内容: hello
字符串长度: 5
等于hello? true
转为大写: HELLO
转为小写: hello
|
如果您要将输入的字符串转换为整数、浮点数等等数据类型,您可以使用以下各类所提供的各个静态剖析方法:
Byte.parseByte(字符串) |
将字符串剖析为位元 |
Short.parseShort(字符串) |
将字符串剖析为short整数 |
Integer.parseInt(字符串) |
将字符串剖析为integer整数 |
Long.parseLong(字符串) |
将字符串剖析为long整数 |
Float.parseFloat(字符串) |
将字符串剖析为float浮点数 |
Double.parseDouble(字符串) |
将字符串剖析为double浮点数 |
注意如果指定的字符串无法剖析为指定的数据类型数值,则会发生NumberFormatException异常。
之前声明字符串时,都是以这样的样子来声明:
String str = "caterpillar";
这样的声明方式看来像是基本数据类型声明,但事实上String并不是Java的基本数据类型,String是java.lang包下所提供的类,如果以配置对象的观念来声明字符串,应该是这样的:
String str = new String("caterpillar");
不过事实上它与下面这段是有差别的:
String str = "caterpillar";
您可以引用 不可变的(immutable)字符串 了解一下差别在哪边。
一个字符串其实是由字节数组所组成,所以使用String类声明字符串后,该字符串会具有数组索引的性质,以下介绍几个与索引相关的方法:
char charAt(int index) |
传回指定索引处的字节 |
int indexOf(int ch) |
传回指定字节第一个找到的索引位置 |
int indexOf(String str) |
传回指定字符串第一个找到的索引位置 |
int lastIndexOf(int ch) |
传回指定字节最后一个找到的索引位置 |
String substring(int beginIndex) |
取出指定索引处至字符串尾端的子字符串 |
String substring(int beginIndex,
int endIndex) |
取出指定索引范围子字符串 |
char[] toCharArray() |
将字符串转换为字节Array |
下面这个程序是个简单的示范:
public class UseString { public static void main(String[] args) { String text = "Your left brain has nothing right.\n" + "Your right brain has nothing left.\n"; System.out.println("字符串内容: "); for(int i = 0; i < text.length(); i++) System.out.print(text.charAt(i));
System.out.println("\n第一个left: " + text.indexOf("left")); System.out.println("最后一个left: " + text.lastIndexOf("left")); char[] charArr = text.toCharArray(); System.out.println("\n字节Array内容: "); for(int i = 0; i < charArr.length; i++) System.out.print(charArr[i]); } }
执行结果:
字符串内容:
Your left brain has nothing right.
Your right brain has nothing left.
第一个left: 5
最后一个left: 64
字节Array内容:
Your left brain has nothing right.
Your right brain has nothing left.
|
在建构字符串对象时,除了直接指定字符串常量之外,您也可以使用字节数组来建构,例如:
char[] name = {'c', 'a', 't', 'e', 'r',
'p', 'i', 'l', 'l', 'a', 'r'};
String str = new String(name);
上面这个程序片段使用字节数组name,建构出一个内容为"caterpillar"的字符串。
除了以上所介绍的几个方法之外,您应该查查API手册,了解更多有关于String类的方法,例如我们可以使用endsWith()方法来过滤文件名称,下面这个程序过滤出文件类型为jpg的文件:
public class UseString { public static void main(String[] args) { String[] filenames = {"caterpillar.jpg", "cater.gif", "bush.jpg", "wuwu.jpg", "clockman.gif"}; System.out.print("过滤出jpg文件: "); for(int i = 0; i < filenames.length; i++) if(filenames[i].endsWith("jpg")) System.out.print(filenames[i] + " "); System.out.println(""); } }
执行结果:
过滤出jpg文件: caterpillar.jpg bush.jpg wuwu.jpg
|
Java对于字符串处理的能力算是很强的,您应该多多利用线上手册,了解更多有关于 java.lang.String
的方法使用。 |