一、字符串概述
字符串是Java中最常用且最基础的数据类型之一。它由零个或多个字符组成的有限序列,用双引号括起来表示。
在Java中,字符串类型是引用类型,如果使用普通方法创建字符串,每次生成新的String对象,会占用大量的系统资源。为了解决这个问题,Java提供了StringBuffer和StringBuilder两种类型,它们是可变的字符串。
StringBuffer和StringBuilder的方法几乎是相同的,主要区别在于StringBuffer是线程安全的,而StringBuilder是非线程安全的。因此,StringBuffer相对较慢,但线程安全;StringBuilder相对较快,但不是线程安全的。
String s = "Hello World!"; // 字符串创建方式1:使用双引号
StringBuffer sb = new StringBuffer(s); // 使用StringBuffer
StringBuilder sbd = new StringBuilder(s); // 使用StringBuilder
二、字符串常用方法
Java提供了许多操作字符串的方法,下面是常用的几种方法。
1、字符串连接
字符串连接操作可以使用“+”运算符或concat()方法。在使用“+”运算符进行连接时,需要注意效率问题,因为每次连接操作都会新建一个String对象。
String s1 = "Hello";
String s2 = "World";
String s3 = s1 + s2; // 使用"+"运算符
String s4 = s1.concat(s2); // 使用concat()方法
2、字符串截取
Java提供了substring()方法实现字符串截取。该方法可根据指定的起始和结束索引对字符串进行截取。返回的是一个新的字符串,原来的字符串不会改变。
String s = "Hello World!";
String s1 = s.substring(0, 5); // 取前5个字符
String s2 = s.substring(6); // 取第6个字符及其后面的所有字符
3、字符串替换
Java中可以使用replace()方法实现字符串替换。该方法会将原字符串中指定的字符替换为新的字符。
String s = "Hello World!";
String s1 = s.replace("World", "Java"); // 将"World"替换为"Java"
4、字符串比较
Java中比较字符串时,可以使用equals()方法或者==运算符。equals()方法比较的是字符串中的内容是否相同,而==运算符比较的是对象的地址是否相同。
通常我们使用equals()方法比较字符串。
String s1 = "Hello";
String s2 = "Hello";
String s3 = new String("Hello");
System.out.println(s1.equals(s2)); // true
System.out.println(s1.equals(s3)); // true
System.out.println(s1 == s2); // true
System.out.println(s1 == s3); // false
三、字符串数组
字符串数组是一个由多个字符串组成的数组。在Java中,字符串数组的声明和其他数组类型相同。字符串数组可以通过字符串常量、String对象和获取输入流等方式进行初始化。
1、字符串数组的创建
字符串数组的创建可以使用以下两种方式:
// 声明并初始化数组
String[] strs1 = {"Hello", "World", "Java"};
// 声明数组后再初始化
String[] strs2 = new String[3];
strs2[0] = "Hello";
strs2[1] = "World";
strs2[2] = "Java";
2、遍历字符串数组
遍历字符串数组可以使用for循环或foreach语句。
String[] strs = {"Hello", "World", "Java"};
// 使用for循环遍历
for(int i=0; i<strs.length; i++){
System.out.println(strs[i]);
}
// 使用foreach语句遍历
for(String str : strs){
System.out.println(str);
}
3、字符串数组的操作
字符串数组可以使用Arrays类中的sort()方法进行排序操作。
// 排序
String[] strs = {"Hello", "World", "Java"};
Arrays.sort(strs); // 按字典序排序
for(String str : strs){
System.out.println(str);
}
4、字符串数组转化为字符串
字符串数组可以通过StringUtils.join()方法转化为字符串。
String[] strs = {"Hello", "World", "Java"};
String str = StringUtils.join(strs, ","); // 将数组转化为以逗号分隔的字符串
System.out.println(str);
四、字符串与数字类型的转换
Java中字符串与数字类型的相互转换非常常见,下面介绍一些常用的转换方式。
1、字符串转换为数字类型
可以使用Integer.parseInt()、Long.parseLong()等方法将字符串转换为数字类型。
String str = "123";
int num = Integer.parseInt(str);
long lnum = Long.parseLong(str);
System.out.println(num);
System.out.println(lnum);
2、数字类型转换为字符串
可以使用String.valueOf()方法将数字类型转换为字符串。
int num = 123;
long lnum = 123L;
String str1 = String.valueOf(num);
String str2 = String.valueOf(lnum);
System.out.println(str1);
System.out.println(str2);
3、字符串与十六进制、八进制的相互转换
可以使用Integer.toHexString()、Integer.toOctalString()等方法将整数转换为十六进制、八进制字符串,使用Integer.parseInt()等方法将十六进制、八进制字符串转换为整数。
int num = 123;
String strHex = Integer.toHexString(num); // 转换为十六进制字符串
String strOct = Integer.toOctalString(num); // 转换为八进制字符串
int num2 = Integer.parseInt(strHex, 16); // 将十六进制字符串转换为整数
int num3 = Integer.parseInt(strOct, 8); // 将八进制字符串转换为整数
System.out.println(strHex);
System.out.println(strOct);
System.out.println(num2);
System.out.println(num3);
五、字符串与日期的转换
Java中字符串与日期的转换可以使用SimpleDateFormat类。
1、字符串转换为日期
String str = "2022-01-01";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(str);
System.out.println(date);
2、日期转换为字符串
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String str = sdf.format(date);
System.out.println(str);
六、字符串与字符数组的转换
1、字符串转换为字符数组
String str = "Hello World!";
char[] chars = str.toCharArray();
for(char c : chars){
System.out.print(c);
}
2、字符数组转换为字符串
char[] chars = {'H', 'e', 'l', 'l', 'o'};
String str = new String(chars);
System.out.println(str);
七、总结
本文介绍了Java中字符串相关的基础知识,包括字符串概述、字符串常用方法、字符串数组、字符串与数字类型的转换、字符串与日期的转换、字符串与字符数组的转换等。希望对Java初学者有所帮助。