Java的字符串处理

直接定义字符串

直接定义字符串是指使用双引号表示字符串中的内容,例如“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"));

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值