1. 概念
String是Java中非常重要的一个类,用于表示字符串。在Java中,字符串是不可变的,这意味着一旦创建了一个String对象,其内容就不能更改。本文将详细介绍Java中String类的用法,包括创建、操作、比较等。
2. 创建String对象
在Java中,有几种方法可以创建String对象:
2.1 字面量创建
直接使用双引号(“”)创建字符串,例如:
String str = "Hello, World!";
2.2 new关键字创建
使用new关键字创建字符串,例如:
String str = new String("Hello, World!");
2.3 字符数组创建
通过字符数组创建字符串,例如:
char[] chars = {'H', 'e', 'l', 'l', 'o'};
String str = new String(chars);
3. 字符串相关操作
3.1 字符串拼接
可以使用+
运算符拼接字符串,例如:
String str1 = "Hello, ";
String str2 = "World!";
String result = str1 + str2;
3.2 字符串长度
使用length()
方法获取字符串长度,例如:
String str = "Hello, World!";
int length = str.length();
3.3 字符串截取
使用substring()
方法截取字符串,例如:
String str = "Hello, World!";
String substr = str.substring(7, 12); // 返回"World"
3.4 字符串分割
使用split()
方法按照指定分隔符分割字符串,例如:
String str = "apple,banana,orange";
String[] fruits = str.split(",");
3.5 字符串查找
使用indexOf()
和lastIndexOf()
方法查找字符串中的字符或子串,例如:
String str = "Hello, World!";
int index = str.indexOf("World"); // 返回7
3.6 字符串替换
使用replace()
方法替换字符串中的字符或子串,例如:
String str = "Hello, World!";
String newStr = str.replace("World", "Java");
4. 字符串比较(常用:equals与==)
4.1 使用==
比较
==
运算符比较的是字符串对象的内存地址,而不是字符串内容。因此,使用==
比较字符串时,只有当两个字符串对象指向同一块内存时,结果才为true。基本数据类型是判断是否相等。
String str1 = "Hello";
String str2 = "Hello";
System.out.println(str1 == str2); // 输出true
String str3 = new String("Hello");
System.out.println(str1 == str3); // 输出false
4.2 使用equals()
比较
equals()
方法比较的是字符串内容是否相同,推荐使用此方法比较字符串。
String str1 = "Hello";
String str2 = "Hello";
System.out.println(str1.equals(str2)); // 输出true
String str3 = new String("Hello");
System.out.println(str1.equals(str3)); // 输出true
4.3 使用equalsIgnoreCase()
比较
equalsIgnoreCase()
方法比较字符串内容是否相同,忽略大小写。
String str1 = "Hello";
String str2 = "hello";
System.out.println(str1.equalsIgnoreCase(str2)); // 输出true
5. 字符串格式化
Java提供了String.format()
方法,用于字符串格式化。格式化字符串时,可以使用占位符%s
、%d
等。
int age = 25;
String name = "John";
String formattedStr = String.format("My name is %s, and I'm %d years old.", name, age);
★String属于基础类型吗?基础类型有哪几种?
String是只读字符串,它并不是基本数据类型,而是一个对象。从底层源码来看是一个final类型的字符数组,所引用的字符串不能被改变,一经定义,无法再增删改。每次对String的操作都会生成新的String对象。
Java 中的基本数据类型只有 8 个:byte、short、int、long、float、double、 char、boolean;除了基本类型(primitive type),剩下的都是引用类型(reference type)。
★如何实现字符串的反转
利用字符串的拼接(charAt()方法),把后遍历出来的放在前面即可实现反转
利用字符串的拼接(toCharArray()处理成字符数组的方法),把后遍历出来的放在前面即可实现反转
利用StringBuffer的reverse()方法
★String str=”aaa”,与String str=new String(“aaa”)一样吗?
String str = “aaa” 相当于从缓存区获取”aaa”对象,如果没有则在缓存区创建对象,再指向。
String str = new String(“aaa”) 相当于开辟一个新的内存区域,新的内存区域指向在缓存区新建的一个”aaa”对象。
★String StringBuffer 和 StringBuilder 的区别是什么?
区别 |
String |
StringBuffer |
StringBuilder |
可变 |
final 不可变 |
可变 |
可变 |
线程安全性 |
安全 |
安全 synchronized 修饰方法 |
不安全 |
使用场景 |
无须修改的字符串 |
多线程环境 |
单线程环境,高效 |
改变字符串时 |
每次新建 |
缓存中获取 |
复制再创建 |