黑马程序员Java个人笔记
目录
字符串比较
== 比较
boolean equals
boolean equalsIgnoreCase
键盘录入和定义的字符串的比较
StringBuilder
打印
编辑
添加元素
反转
获取长度
toString
练习
对称字符串
拼接字符串
StringJoiner
概述
编辑
构造方法
只有间隔符号
间隔符号、开始符号、结束符号
成员方法
length
String、StringBuilder、StringJoiner总结
字符串比较
== 比较
- 基本数据类型:比的是数据值
- 引用数据类型的:比的是地址值
boolean equals
- 完全一样,结果才是 true,否则为 false
public class Demo1 {
public static void main(String[] args) {
String s1 = new String("abc");
String s2 = "abc";
String s3 = "Abc";
boolean result1 = s1.equals(s2);
boolean result2 = s1.equals(s3);
System.out.println(result1); // true
System.out.println(result2); // false
}
}
boolean equalsIgnoreCase
- 忽略大小写的比较
public class Demo1 {
public static void main(String[] args) {
String s1 = new String("abc");
String s2 = "abc";
String s3 = "Abc";
boolean result1 = s1.equalsIgnoreCase(s2); // true
boolean result2 = s1.equalsIgnoreCase(s3); // true
System.out.println(result1);
System.out.println(result2);
}
}
键盘录入和定义的字符串的比较
- 结果为false
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str1 = sc.next(); // 输入abc
// 代码中再定义一个字符串 abc
String str2 = "abc";
// 用 == 比较
System.out.println(str1 == str2); // false
}
}
StringBuilder
- StringBuilder 可以看成一个容器,创建之后里面的内容是可变的
- 作用:提高字符串的操作效率
- 只有一个StringBuilder对象,在拼接过程中,不会产生没有用的字符串
- 使用场景
- 字符串拼接
- 字符串反转
打印
- 因为 StringBuilder 是 Java 已经写好的类
- java 在底层对它做了一些特殊处理
- 打印对象不是地址值,而是属性值,也就是容器里的内容
- 如果用空参构造来创建 StringBuilder 容器对象,那这个容器里面一开始是空的
添加元素
反转
- 字符串本身是不能发生变化的,只有返回值才是截取、替换等之后的结果
- 在 StringBuilder 中的内容,是可以发生变化的
- reverse(); 之后,容器里的内容直接反转了
获取长度
toString
- sb 是 StringBuilder 类型的,只是个容器,来帮助我们操作字符串的工具
- 用 toString 方法把它变成字符串
- 再把 StringBuilder 变回字符串
public class Demo1 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("aaa");
sb.append("bbb");
sb.append("ccc");
sb.append("ddd");
System.out.println(sb); // aaabbbcccddd
// 再把 StringBuilder 变回字符串
String str = sb.toString();
System.out.println(str); // aaabbbcccddd
}
}
练习
对称字符串
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
// 键盘录入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String str = sc.next();
// 反转键盘录入的字符串
String res = new StringBuilder().append(str).reverse().toString();
// 比较
if (str.equals(res)) {
System.out.println("当前字符串是对称字符串");
} else {
System.out.println("当前字符串不是对称字符串");
}
}
}
拼接字符串
public class Demo1 {
public static void main(String[] args) {
// 定义数组
int[] arr = {1, 2, 3};
// 调用方法把数组变成字符串
String str = arrToString(arr);
System.out.println(str);
}
public static String arrToString(int[] arr){
StringBuilder sb = new StringBuilder();
sb.append("[");
for(int i = 0; i < arr.length; i++){
if(i == arr.length-1){
sb.append(arr[i]);
} else {
sb.append(arr[i]).append(", ");
}
}
sb.append("]");
return sb.toString();
}
}
StringJoiner
概述
构造方法
只有间隔符号
import java.util.StringJoiner;
public class Demo1 {
public static void main(String[] args) {
// 创建一个对象,并指定间隔符号。开始符号、前缀符号
StringJoiner sj = new StringJoiner(",", "[", "]");
// 添加元素
sj.add("aaa").add("bbb").add("ccc");
// 打印
System.out.println(sj); // [aaa,bbb,ccc]
}
}
间隔符号、开始符号、结束符号
import java.util.StringJoiner;
public class Demo1 {
public static void main(String[] args) {
// 创建一个对象,并指定间隔符号。开始符号、前缀符号
StringJoiner sj = new StringJoiner(",", "[", "]");
// 添加元素
sj.add("aaa").add("bbb").add("ccc");
// 打印
System.out.println(sj); // [aaa,bbb,ccc]
}
}
成员方法
length
所有字符的总个数
import java.util.StringJoiner;
public class Demo1 {
public static void main(String[] args) {
// 创建一个对象,并指定间隔符号、开始符号、结束符号
StringJoiner sj = new StringJoiner(",", "[", "]");
// 添加元素
sj.add("aaa").add("bbb").add("ccc");
int len = sj.length();
System.out.println(len); // 13
// 打印
System.out.println(sj); // [aaa,bbb,ccc],包括符号,一共13个字符
}
}