- String类
知识点
注意:
1.String这个类比较特殊, 打印其对象名的时候, 不会出现内存地址而是该对象所记录的真实内容
字符串直接赋值创建与new String()创建的区别:
1.直接赋值---将字符串常量池中的地址赋值给变量
以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串池中维护
2.new String()方法创建---在常量池中创建新对象
通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同
3.字符串的比较
== 比较基本数据类型:比较的是具体的值
== 比较引用数据类型:比较的是对象地址值(比较两个引用对象是否指向同一个对象)
equals:比较两个引用数据类型的内容是否相同,区分大小写(String)
String类 : public boolean equals(String s) 比较两个字符串内容是否相同、区分大小写
String总结:
String ------------- trim() ------- 去掉字符串两端的空格
- StringBuilder类-文件I/O流使用
String是不可变的字符串,StringBuilder--内容是可变的,可以提高字符串的操作效率。
补充函数:delete(int start,int end)
- String和StringBuilder之间的区别
- String类是不可改变的,每次修改都会产生一个新的String类对象,所以String类操作效率低。
- StringByilder类是可变的,可以对字符串进行修改,所以StringBuilder类操作效率较高。
String和StringBuilder之间的转换 - StringBuilder——>String toString()
- String ——> StringBuilder
StringBuilder变量=new StringBuilder(字符串变量)
StringBuilder的替换 replace(start,end,str替)函数 end下标不包含
索引查找 indexOf()---
indexOf() 方法用于在字符串中查找指定子串,并返回第一个匹配项的索引。Java 提供了四种常用的查找方法,分别是 indexOf(String str)、indexOf(String str, int startIndex)、lastIndexOf(String str)、lastIndexOf(String str, int startIndex)。Java 中的 indexOf() 方法:
- int indexOf(String str): 返回第一次出现的指定子字符串在此字符串中的索引
- int indexOf(String str, int startIndex): 从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。
- int lastIndexOf(String str): 返回在此字符串中最右边出现的指定子字符串的索引。
- int lastIndexOf(String str, int startIndex):此方法接收两个参数,第一个参数是要查找的子字符串 str,第二个参数是开始搜索的索引位置 startIndex。它会从指定的索引位置向后搜索,并返回最后一次出现指定子字符串的索引位置。如果在指定的索引位置之后没有找到子字符串,则返回 -1。如果子字符串为空字符串或者搜索索引超出了字符串的长度,则返回字符串的长度。
String的替换 replace(str1,str2)
实例记录:
功能描述:生成一个六位验证码
实现思路:对于随机字母或数字的选取,采用将所有的大小写字母和数字放在一个字符串数组中,通过随机类Random生成随机数字,作为下标提取到对应的验证码字符,通过六次循环得到最后的六位验证码。
关键方法:
public char charAt(int index) 返回索引处的char值
public int nextInt(int num) 返回[0,num-1)范围内的一个随机整数
完整代码:
public static void main(String[] args) {
// 创建一个StringBuilder对象,用于存储生成的验证码
StringBuilder code = new StringBuilder();
// 创建一个Random对象
Random random = new Random();
// 定义验证码的字符集
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
// 生成一个六位数的验证码
for (int i = 0; i < 6; i++) {
// 随机选择一个字符
char randomCharacter = characters.charAt(random.nextInt(characters.length()));
// 将随机字符添加到StringBuilder对象
code.append(randomCharacter);
}
// 将StringBuilder对象转换为String并输出
System.out.println("得到验证码为: " + code.toString());
}
类选择想法:根据String和StringBuider之间的区别:
String类是不可改变的,每次修改都会产生一个新的String类对象
StringByilder类是可变的,可以对字符串进行修改。
所以针对本次字符串的修改添加操作选用StringBuilder类进行操作更加适合。