文章目录
- 一、字符串的内容不可改变
- 二、String 类中常用方法
- (1)字符串与字符数组的转换
- (2)从字符串中取出指定位置的字符
- (3)字符串与 byte 数组的转换
- (4)取得一个字符串的长度
- (5)查找一个指定的字符串是否存在
- (6)去掉左右空格
- (7)字符串截取
- (8)按照指定的字符串拆分字符串
- (9)字符串的大小写转换
- (10)判断是否以指定的字符串开头或结尾
- (11)不区分大小写进行字符串比较
- (12)将一个指定的字符串,替换成其他的字符串
一、字符串的内容不可改变
字符串的内容一旦声明则不可改变
public class Test{
public static void main(String[] args) {
String str = "hello";
str = str + "world";
System.out.println("str = " + str);
}
}
如图所示,一个 String 对象内容的改变实际上是通过内存地址的“断开-连接”变化完成的,而本身字符串中的内容并没有任何的变化。
二、String 类中常用方法
(1)字符串与字符数组的转换
字符串可以使用 toCharrArry()
方法变成一个字符数组,也可以使用 String 类的构造方法把一个字符数组变为一个字符串。
public class Test{
public static void main(String[] args) {
String str1 = "Java";
char ch[] = str1.toCharArray();//定义字符串
for(int i=0;i< ch.length;i++){ //循环输出数组里的字符
System.out.print(ch[i] + "\t");
}
System.out.println();
String str2 = new String(ch);//将全部字符数组变为 String
String str3 = new String(ch,0,3); //将部分字符数组变为 String
System.out.println(str2);
System.out.println(str3);
}
}
(2)从字符串中取出指定位置的字符
可以直接使用 String 类中的 charAt()
方法取出字符串指定位置的字符
public class Test{
public static void main(String[] args) {
String str = "Java";
System.out.println(str.charAt(3));//取出字符串中第四个字符
}
}
(3)字符串与 byte 数组的转换
字符串可以通过 getBytes()
方法将 String 变为一个 byte 数组,之后可以通过 String 的构造方法将一个字节数组重新变为字符串。
public class Test{
public static void main(String[] args) {
String str1 = "Java"; // 定义字符串
byte bt[] = str1.getBytes(); // 将字符串变为 byte 数组
System.out.println(new String(bt)); //将全部 byte数组变为字符串
System.out.print(new String(bt,1,3)); //将部分byte数组变为字符串
}
}
(4)取得一个字符串的长度
在 String 中使用 length()
取得字符串的长度
public class Test{
public static void main(String[] args) {
String str1 = "Java"; // 定义字符串
System.out.print("\"" + str1 + "\"的长度为:" + str1.length());
}
}
length 与 length() 的区别:
在数组操作中,使用 length
取得数组的长度,但是操作的最后没有 “()”
但是字符串调用 length()
是一个方法,只要是方法后面都要有 ‘()’
(5)查找一个指定的字符串是否存在
在 String 中使用 indexOf()
方法,可以返回指定的字符串的位置,如果不存在则返回 -1
public class Test{
public static void main(String[] args) {
String str1 = "Java"; // 定义字符串
System.out.println(str1.indexOf("v")); // 查到返回位置
System.out.println(str1.indexOf("v",2)); //查到返回位置,从第 3 个字符开始查找
System.out.println(str1.indexOf("h")); //没有查到返回 -1
}
}
JDK 1.5 后也可以使用 contains()
方法判断字符串是否存在contains()
方法直接返回 boolean
型数据
public class Test{
public static void main(String[] args) {
String str1 = "I am learning Java"; // 定义字符串
if (str1.contains("Java")){
System.out.print("可以查询到数据");
}
}
}
(6)去掉左右空格
可以使用 trim()
方法去掉字符串的左、右空格
public class Test{
public static void main(String[] args) {
String str1 = " Java "; // 定义字符串
System.out.println(str1);
System.out.println(str1.trim());
}
}
(7)字符串截取
在 String 中提供了两个 substring()
方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。
public class Test{
public static void main(String[] args) {
String str1 = "I am learning Java"; // 定义字符串
System.out.println(str1.substring(5)); // 从第5个位置开始截取
System.out.println(str1.substring(0,5)); //截取0-5个位置的内容
}
}
(8)按照指定的字符串拆分字符串
在 String 中通过 split() 方法可以进行字符串的拆分操作,拆分的数据将以字符串数组的形式返回。
public class Test{
public static void main(String[] args) {
String str1 = "I am learning Java"; // 定义字符串
String s[] = str1.split(" "); // 按照空格进行字符串的拆分
for(int i=0;i<s.length;i++){
System.out.println(s[i]);
}
}
}
避免正则表达式的影响,可以进行转义操作:
public class Test{
public static void main(String[] args) {
String str1 = "192.168.1.1"; // 定义字符串
// 此时需要对拆分的“.” 进行转义,Java转义需要使用“\\”
// 此处的 "\\" 表示一个 "\"
String s[] = str1.split("\\."); // 按照"."进行字符串的拆分
for(int i=0;i<s.length;i++){
System.out.println(s[i]);
}
}
}
(9)字符串的大小写转换
toUpperCase():大写转换
toLowerCase():小写转换
public class Test{
public static void main(String[] args) {
String str = "hello";
System.out.println(str.toUpperCase());
System.out.println(str.toLowerCase());
}
}
(10)判断是否以指定的字符串开头或结尾
在 String 中使用startsWith()
方法可以判断字符串是否以指定的内容开头,使用endsWith()
方法可以判断字符串是否以指定的内容结尾。
public class Test{
public static void main(String[] args) {
String str = "**hello**";
if(str.startsWith("**")){
System.out.println("判断开头是否是 ** ");
}
if(str.endsWith("**")){
System.out.println("判断结尾是否是 ** ");
}
System.out.println(str.startsWith("**"));
}
}
(11)不区分大小写进行字符串比较
在 String 中可以通过 equals()
方法进行字符串内容的比较,但是这种方法是区分大小写的比较,如果要完成不区分大小写的比较可以使用 equalsIgnoreCase()
方法。
public class Test{
public static void main(String[] args) {
String str = "hello";
String STR = "HELLO";
System.out.println(str.equals(STR));
System.out.println(str.equalsIgnoreCase(STR));
}
}
(12)将一个指定的字符串,替换成其他的字符串
使用 String 的 replaceAll() 方法,可以将字符串的指定内容进行替换。
public class Test{
public static void main(String[] args) {
String str = "hello";
String newstr = str.replaceAll("l","x"); // 将字符串中所有的 l 替换成 x
System.out.println(newstr);
}
}