直接定义字符串
直接定义字符串是指使用双引号表示字符串中的内容,例如“Hello Java”、“Java 编程”等。
具体方法是用字符串常量直接初始化一个 String 对象,示例如下:
String str = "Hello Java";
或者
String str;
str = "Hello Java";
注意:字符串变量必须经过初始化才能使用。
使用 String 类定义
前面我们提到在 Java 中每个双引号定义的字符串都是一个 String 类的对象。因此,可以通过使用 String 类的构造方法来创建字符串,该类位于 java.lang 包中(关于 Java 常用的包,后面会详细讲解)。
String 类的构造方法有多种重载形式,每种形式都可以定义字符串。下面介绍最常用的几
种形式。
注意:具有和类名相同的名称,而且没有返回类型的方法称为构造方法。重载是指在一个
类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。后面会
详细讲解,这里了解一下就可以。
1. String()
初始化一个新创建的 String 对象,表示一个空字符序列。
2. String(String original)
初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列。换句话说,新创建的字符串是该参数字符串的副本。例如:
String str1 = new String("Hello Java");
String str2 = new String(str1);
这里 str1 和 str2 的值是相等的。
3. String(char[ ]value) 了解
分配一个新的字符串,将参数中的字符数组元素全部变为字符串。该字符数组的内容已被
复制,后续对字符数组的修改不会影响新创建的字符串。例如:
char a[] = {'H','e','l','l','0'};
String sChar = new String(a);
a[1] = 's';
上述 sChar 变量的值是字符串“Hello”。 即使在创建字符串之后,对 a 数组中的第 2 个元素进行了修改,但未影响 sChar 的值。
4. String(char[] value,int offset,int count) 了解
分配一个新的 String,它包含来自该字符数组参数一个子数组的字符。offset 参数是子数组第一个字符的索引,count 参数指定子数组的长度。该子数组的内容已被赋值,后续对字符数组的修改不会影响新创建的字符串。例如:
char a[]={'H','e','l','l','o'};
String sChar=new String(a,1,4);
a[1]='s';
上述 sChar 变量的值是字符串“Hello”。该构造方法使用字符数组中的部分连续元素来创建字符串对象。offset 参数指定起始索引值,count 指定截取元素的个数。创建字符串对象后,即使在后面修改了 a 数组中第 2 个元素的值,对 sChar 的值也没有任何影响。
String 转换为 int
String 字符串转整型 int 有以下两种方式:
Integer.parseInt(str)
Integer.valueOf(str).intValue()
注意:Integer 是一个类,是 int 基本数据类型的封装类。
例如下面代码所示:
public static void main(String[] args) {
String str = "123";
int n = 0;
// 第一种转换方法:Integer.parseInt(str)
n = Integer.parseInt(str);
System.out.println("Integer.parseInt(str) : " + n);
// 第二种转换方法:Integer.valueOf(str).intValue()
n = 0;
n = Integer.valueOf(str).intValue();
System.out.println("Integer.parseInt(str) : " + n);
}
输出结果为:
Integer.parseInt(str) : 123
Integer.parseInt(str) : 123
在 String 转换 int 时,String 的值一定是整数,否则会报数字转换异常(
java.lang.NumberFormatException)。
int 转换为 String
整型 int 转 String 字符串类型有以下 3 种方法:
String s = String.valueOf(i);
String s = Integer.toString(i);
String s = "" + i;
例如下面代码所示:
public static void main(String[] args) {
int num = 10;
// 第一种方法:String.valueOf(i);
num = 10;
String str = String.valueOf(num);
System.out.println("str:" + str);
// 第二种方法:Integer.toString(i);
num = 10;
String str2 = Integer.toString(num);
System.out.println("str2:" + str2);
// 第三种方法:"" + i;
String str3 = num + "";
System.out.println("str3:" + str3);
}
输出结果为:
str:10
str2:10
str3:10
使用第三种方法相对第一第二种耗时比较大。在使用第一种 valueOf() 方法时,注意
valueOf 括号中的值不能为空,否则会报空指针异常(NullPointerException)。
valueOf() 、parseXxx()和 toString()
1)valueOf()
valueOf() 方法将数据的内部格式转换为可读的形式。它是一种静态方法,对于所有 Java 内置的类型,在字符串内被重载,以便每一种类型都能被转换成字符串。
static String valueOf(double num)
static String valueOf(long num)
static String valueOf(Object ob)
static String valueOf(char chars[])
2)parse()
parseXxx(String) 这种形式,是指把字符串转换为数值型,其中 Xxx 对应不同的数据类型,然后转换为 Xxx 指定的类型,如 int 型和 float 型。
3)toString()
toString() 可以把一个引用类型转换为 String 字符串类型,是 sun 公司开发 Java 的时候为了方便所有类的字符串操作而特意加入的一个方法。
String 字符串虽然是不可变字符串,但也可以进行拼接,只是会产生一个新的对象。
String 字符串拼接可以使用“+”运算符或 String 的 concat(String str) 方法。
“+”运算符优势是可以连接任何类型数据拼接成为字符串,而 concat 方法只能拼接 String类型字符串。
使用连接运算符“+”
Java 语言允许使用“+”号连接(拼接)两个字符串。“+”运算符是最简单、最快捷,也是使用最多的字符串连接方式。在使用“+”运算符连接字符串和 int 型(或 double 型)数据时,“+”将 int(或 double)型数据自动转换成 String 类型。
例 1
System.out.println(new String(" aa ")+10);
System.out.println(new Integer(10)+10);
使用 concat() 方法
在 Java 中,String 类的 concat() 方法实现了将一个字符串连接到另一个字符串的后面。
concat() 方法语法格式如下:
字符串 1.concat(字符串 2);
执行结果是字符串 2 被连接到字符串 1 后面,形成新的字符串。
例 2
如 concat() 方法的语法所示,concat() 方法一次只能连接两个字符串,如果需要连接多个字符串,需要调用多次 concat() 方法。
下面创建一个实例代码来演示如何使用 concat() 方法连接多个字符串。
public static void main(String[] args) {
String info = "三国演义、";
info = info.concat("西游记、");
info = info.concat("水浒传、");
info = info.concat("红楼梦");
System.out.println(info);
String cn = "中国";
System.out.println(cn.concat("北京").concat("海淀区").concat("人民公园"));
}
执行该段代码,输出的结果如下所示。
三国演义、西游记、水浒传、红楼梦 中国北京海淀区人民公园
Java 获取字符串长度(length())
要获取字符串的长度,可以使用 String 类的 length() 方法,其语法形式如下:
字符串名.length();
Java 字符串大小写转换
String 类的 toLowerCase() 方法可以将字符串中的所有字符全部转换成小写,而非字母的字符不受影响。语法格式如下:
字符串名.toLowerCase() // 将字符串中的字母全部转换为小写,非字母不受影响
toUpperCase() 则将字符串中的所有字符全部转换成大写,而非字母的字符不受影响。语法格式如下:
字符串名.toUpperCase() // 将字符串中的字母全部转换为大写,非字母不受影响
例如:
String str="abcdef 我 ghijklmn";
System.out.println(str.toLowerCase()); // 输出:abcdef 我 ghijklmn
System.out.println(str.toUpperCase()); // 输出:ABCDEF 我 GHIJKLMN
Java 去除字符串中的空格(trim())
字符串中存在的首尾空格一般情况下都没有任何意义,如字符串“ Hello ”,这需要使用
String 类提供的 trim() 方法。
trim() 方法的语法形式如下:
字符串名.trim()
使用 trim() 方法的示例如下:
String str = " hello ";
System.out.println(str.length()); // 输出 7
System.out.println(str.trim().length()); // 输出 5
从该示例中可以看出,字符串中的每个空格占一个位置,直接影响了计算字符串的长度。
如果不确定要操作的字符串首尾是否有空格,最好在操作之前调用该字符串的 trim()
方法去除首尾空格,然后再对其进行操作。
注意:trim() 只能去掉字符串中前后的半角空格(英文空格),而无法去掉全角空格(中
文空格)
Java 截取(提取)子字符串(substring())
在 String 中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。
1. substring(int beginIndex) 形式
此方式用于提取从索引位置开始至结尾处的字符串部分。调用时,括号中是需要提取字符
串的开始位置,方法的返回值是提取的字符串。例如:
String str = "我爱 JAVA 编程";
String result = str.substring(3);
System.out.println(result); // 输出:Java 编程
2. substring(int beginIndex,int endIndex) 形式 左闭右开
此方法中的 beginIndex 表示截取的起始索引,截取的字符串中包括起始索引对应的字符;
endIndex 表示结束索引,截取的字符串中不包括结束索引对应的字符,如果不指定
endIndex,则表示截取到目标字符串末尾。该方法用于提取位置 beginIndex 和位置
endIndex 位置之间的字符串部分。
Java 分割字符串(spilt())
String 类的 split() 方法可以按指定的分割符对目标字符串进行分割,分割后的内容存放在字符串数组中。该方法主要有如下两种重载形式:
str.split(String sign)
str.split(String sign,int limit)
其中它们的含义如下:
str 为需要分割的目标字符串。
sign 为指定的分割符,可以是任意字符串。
limit 表示分割后生成的字符串的限制个数,如果不指定,则表示不限制,直到将
整个目标字符串完全分割为止
使用 split() 方法对字符串进行分割的实例如下:
public static void main(String[] args) {
String Colors = "Red,Black,White,Yellow,Blue";
String[] arr1 = Colors.split(","); // 不限制元素个数
String[] arr2 = Colors.split(",", 3); // 限制元素个数为 3
System.out.println("所有颜色为:");
for (int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i]);
}
System.out.println("前三个颜色为:");
for (int j = 0; j < arr2.length; j++
System.out.println(arr2[j]);
}
}
Java 字符串的替换 replace()
replace() 方法用于将目标字符串中的指定字符(串)替换成新的字符(串),其语法格式
如下:
字符串.replace(String oldChar, String newChar)
其中,oldChar 表示被替换的字符串;newChar 表示用于替换的字符串。replace() 方法会将
字符串中所有 oldChar 替换成 newChar。
例 1
创建一个字符串,对它使用 replace() 方法进行字符串替换并输出结果。代码如下:
public static void main(String[] args) {
String words = "hello java,hello php";
System.out.println("原始字符串是'"+words+"'");
System.out.println("replace(\"l\",\"D\")结果:"+words.replace("l","D"));
System.out.println("replace(\"hello\",\"你好\")结果:"+words.replace("hello","你好
"));
words = "hr's dog";
System.out.println("原始字符串是'"+words+"'");
System.out.println("replace(\"r's\",\"is\")结果:"+words.replace("r's","is"));
}