java语言中,字符串是字符的序列,包含零或多个字符。作为对象处理,被封装在双引号中(不是单引号,单引号封装的是char类型的数据)。他提供了一系列方法对整个字符串进行操作,使得对字符串的处理更加容易和规范。
java.lang包中定义了两个用于字符串操作的类:String 和 StringBuffer 类。在运行中其值不能被改变的字符串用String 类存储;其值能被改变的字符串用StringBuffer类来存储。
String 和 StringBuffer 类都被声明为final ,因此都不能被继承。下面重点讨论String 类。
1.String 字符串创建
String类的对象可用字符串常量对其初始化,也可调用其构造方法来进行。例:
String s = "Hello World "; //使用字符串常量"Hello World "初始化s对象
注:利用字符串常量对String 类的对象赋值,为该对象在常量池中分配内存空间。经常使用的创建字符串的另一个方法是使用String类的构造方法。String类的主要构造方法见下表:
方法 | 功能 | 示例 |
String() | 初始化一个新建的String对象,是其表示一个空字符序列 |
String s = new String(); s 的内容为""(空) |
String(String original) |
初始化一个新创建的String 对象,使其表示一个与参数相同的字符序列, 换句话说,新创建的字符串是该参数字符串的副本 |
String s = new String("Hello"); s 的内容为"Hello" |
String(char[] value) | 分配一个新的String,使其表示字符数组参数中当前包含的字符序列 |
char[] ch = {'H','e','l','l','o'}; String s = new String(ch); s 的内容为"Hello" |
String(char[] value,int offset,int count) | 分配一个新的String,它包含取自字符数组参数一个子数组的字符 |
char[] ch={'H','e','l','l','o','','j','a','v','a'}; String s = new String(ch,0,5); s 的内容为"Hello" |
注:java语言不能讲讲字符串看做字符数组。使用new操作创建的字符串在堆内存中为其分配空间。
2.String类的常用方法
String类的功能很强大,几乎覆盖了所有的字符串运算操作。下面是一些常用方法:
方法 | 功能 | 示例 |
char charAt(int index) | 返回指定索引处的char值 |
String s ="Hello java"; char c = s..charAt(6); c的值为’j’ |
String concat(String str) | 将指定字符串连接到此字符串的结尾 |
String s1 = "Hello"; String s2 = "java"; s1 = s1.cancat(s2); s1 的内容为"Hello java" |
boolean equals(Object anObject) | 将次字符串与制定的对象比较,当且仅当该参数不为null,并且是与此对象表示相同字符序列的String对象是,结果才为true |
String s1 = "Hello java" String s2 = new String("Hello java"); boolean b = s1.equals(s2); b的值为true |
int indexOf(int ch) | 返回指定字符在此字符串中第一次出现处的索引 |
int x = 97; // 对应小写字母a String s = "Hello java"; int index = s.indexOf(x); index 是小写字母a在字符串中的第一次出现的索引值,即7 |
int indexOf(String str) | 返回指定子字符串在此字符串中第一次出现的索引 |
String s = "Hello java"; int index = s.indexOf("Hello"); index 是字符串"Hello"在字符串s中第一次出现的索引值,即0 |
boolean isEmpty() |
当且仅当length() 为0 时返回 true |
String s1 =""; String s2 = "Helo java"; boolean b1=s1.isEmpty(); boolean b2 =s2.isEmpty(); b1的值为true,B2的值为false |
int length() | 返回此字符串的长度,字符串的下标是从0~(length-1) |
String s ="Hello java"; int l = s.length(); l 的值为10 |
String substring(intbeginIndex,int endIndex) | 返回从beginIndex 位置到endIndex(不包括该位置)之间的所有字符组成的新字符串 |
String s1 = "Hello java"; String s2 = s1.subString(6,9); s2的内容为java |
String toLowerCase() | 使用默认语言环境的规则将String 中的所有字符都转换为小写 |
String s1 = "Hello java"; String s2 = s1.toLowerCase(); s2的内容为"hello java" |
String toUpperCase() | 使用默认语言环境的规则将String 中的所有字符都转换为大写 |
String s1 = "Hello java"; String s2 = s1.toUpperCase(); s2的内容为"HELLO JAVA" |
static String valueOf(type value) | 返回相应类型参数的字符串表现形式 |
int value = 123; String s1 = String.valueOf(value); String s2 = String.valueOf(153.2); s1的内容为"123",s2 的内容为"153.2" |
注:1.包含一个空格字符的字符串不是空串
2.区分数组中的length属性与String类中的length()方法。
3.字符串与数值之间的转换
java语言为每种基本数据类型提供了封装类,分别对应为Byte,Short,Integer,Long,Float,Double,Character和Boolean 类。这些封装(wrapper)类提供了很直观的实用方法。特别是每种封装类(除Character)中都有parseXXX()方法将一个String 对象转换成相应的数值。同时,在String类中提供了多个静态的重载valueOf()方法,将相应的基本数据类型转换成相应的字符串类型。