20240801字符串
一:这两天真正写完了java的第一个比较全面的程序——图书管理系统。
二:String类的学习:
- 字符串构造(三种):
//1、使用常量串构造
String s1 = "hello bit";
System.out.println(s1);
//2、直接newString对象
String s2 = new String("hello bit");
System.out.println(s2);
//3、使用字符数组进行构造
char[] array = {'h','e','l','l','o','b','i','t'};
String s3 = new String(array);
System.out.println(s3);
- String对象的比较(4种):
A、==比较是否引用同一个对象:对于内置类型,==比较的是变量中的值;对于引用类型,==比较的是引用中的地址。(String就是引用类型,所以==比较的是String的地址)
B、.equals:boolean equals(Object anObject)按照字典序比较(字符大小的顺序)
String类重写了父类Object中equals方法,Object中equals默认按照==比较,String重写equals方法后,按照如下规则进行比较,比如:s1.equals(s2)
==比较的是对象,即位置,.equals比较的是内容。
C、compareTo: int compareTo(String s)方法:按照字典序进行比较。
与equals不同的是,equals返回的是boolean类型,而compareTo返回的是int类型,具体比较方式:
首先:按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值。
之后:如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值。
D、compareToIgnoreCase: int compareToIgnoreCase(String str)方法:与compareTo方式相同,但是忽略大小写比较。
3、字符串查找:9个
char charAt(int index):返回index位置上字符,如果index为负数或者越界,抛出IndexOutOfBoundsException异常
int indexOf(int ch):返回ch第一次出现的位置,没有返回-1
int indexOf(String str):返回str第一次出现的位置,没有返回-1
int indexOf(int ch,int fromIndex):从fromIndex位置开始找ch第一次出现的位置,没有返回-1
int indexOf(String str,int fromIndex):从fromIndex位置开始找str第一次出现的位置,没有返回-1
int lastIndexOf(int ch):从后往前找,返回ch第一次出现的位置,没有返回-1
int lastIndexOf(String str):从后往前找,返回str第一次出现的位置,没有返回-1
int lastIndexOf(int ch,int fromIndex):从fromIndex位置开始找,从后往前找ch第一次出现的位置,没有返回-1
int lastIndexOf(String str,int fromIndex):从fromIndex位置开始找,从后往前找str第一次出现的位置,没有返回-1
4、字符串转化
数值和字符串转化:
数字转字符串:String s1 = String.valueOf(1234);
字符串转数字:int data1 = Integer.parseInt(“1234”);
double data2 = Double.parseDouble(“12.34”);大小写转换:
小写转大写:sout(s1.toUpperCase());
大写转小写:sout(s2.toLowerCase());
字符串转数组:
字符串转数组:
char[] ch = s1.toCharArray();
for (int i = 0; i < ch.length; i++) {
System.out.print(ch[i]);
}
System.out.println();
//数组转字符串
String s2 = new String(ch);
System.out.println(s2);
格式化。
5、字符串替换:
String replaceAll(String regex,String replacement)替换所有的制定内容
String replaceFirst(String regex,String replacement)替换首个内容
6、字符串拆分
7、字符串截取