1.字符串构造
String类型字符串构造有三种方式:
(1)直接赋值
String str = "abcdef";
(2)通过new一个对象
String str1 = new String("abcdef");
(3)使用字符数组进行构造
char[] array = {'a','b','c','d','e','f'};
String str2 = new String(array);
2.字符串的比较
(1)两个字符串通过等号进行比较
等号比较的是两个字符串的地址,地址相等则返回true,否则返回false。下面来看一串代码:
public static void main(String[] args) {
String str1 = "abcde";
String str2 = "abcde";
System.out.println(str1 == str2);
String str3 = new String("abcde");
String str4 = new String("abcde");
System.out.println(str3 == str4);
}
我们发现两个的结果不同,这里我们涉及到另一个知识也就是字符串常量池,在字符串常量池中两个一样的字符串常量,所存放的地址是一样的。我们采用第一种定义方法时,字符串是常量字符串存在于字符串常量池当中,所有返回了true。我们采用第二种定义方法时,是通过new出了一个新的对象再赋值,所以存储的地址肯定是不一样的,故返回false。
(2)equals方法
equals方法在String类中进行了重写,作用就是用来比较两个字符串是否相同。
public static void main(String[] args) {
String str1 = "abcde";
String str2 = "abcde";
boolean bool = str1.equals(str2);
System.out.println(bool);
}
(3)equalsIgnoreCase方法
该方法可以忽略字符串的大小写进行比较
String str1 = "abcde";
String str2 = "abcde";
boolean bool1 = str1.equalsIgnoreCase(str2);
System.out.println(bool1);
String str3 = "abCDe";
String str4 = "abcde";
boolean bool2 = str3.equalsIgnoreCase(str4);
System.out.println(bool2);
(4)compareTo方法
上面的比较方法只能比较想不想等,而这个方法可以比较两个字符串的大小,当串1比串2大时返回大于0的数,相等则返回0,小于则返回小于0的数字。
public static void main(String[] args) {
String str1 = "abcd";
String str2 = "bcde";
int ret = str1.compareTo(str2);
System.out.println(ret);
}
(5) compareToIgnoreCase方法
该方法可以忽略大小写进行比较,返回原理和compareTo方法一样
String str1 = "abcd";
String str2 = "bcde";
int ret = str1.compareToIgnoreCase(str2);
System.out.println(ret);
3.字符串的查找
字符串的查找方法较多这里先演示几种常用的方法,剩下的以表格的形式给出
(1)charAt方法
该方法是传入一个整型的数字,表示该字符串的下标并返回该下标表示的字符,注意下标从0开始
public static void main(String[] args) {
String str1 = "abcde";
char ch = str1.charAt(2);
System.out.println(ch);
}
(2) indexOf方法
传入你想要找的字符,若找到了则返回该字符第一次出现的位置的下标,没找到则返回-1。
public static void main(String[] args) {
String str = "abcdecf";
int ret = str.indexOf('c');
System.out.println(ret);
}
如果你想要从某个位置开始查找,找到后返回第一个该字符的位置,没有则返回-1.也是可以使用indexOf方法的,这是indexOf的重载方法,要传入两个参数。
public static void main(String[] args) {
String str = "abcdecf";
int ret = str.indexOf('c',3);
System.out.println(ret);
}
当然要是你要查找一个字符串里面是不是有我想要查找的字符串也可以使用indexOf方法,具体实现如下
public static void main(String[] args) {
String str = "abcdecf";
int ret = str.indexOf("cde");
System.out.println(ret);
}
(3)lastindexOf方法
该方法和indexOf方法差不多,只不过是从后面往前面查找,查找到返回第一个查找到的字符的下标,这里要注意下标照样是从左向右从0开始
public static void main(String[] args) {
String str = "abcdcef";
int ret = str.lastIndexOf('c');
System.out.println(ret);
}
当然lastindexOf 也有很多重载方法,剩下的以表格呈现给大家
4.字符串的转化和替换
(1)String.valueOf方法
该方法可以将整型,浮点型,字符,布尔类型的值都转化成字符串类型
public static void main(String[] args) {
String str = String.valueOf(12.34);
String str1 = String.valueOf(1234);
String str2 = String.valueOf('c');
String str3 = String.valueOf(true);
System.out.println(str);
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
}
(2)parseInt和parseDouble方法
这两个方法可以将字符串类型转化成数字类型
public static void main(String[] args) {
String str = "1234";
String str1 = "12.34";
int a = Integer.parseInt(str);
System.out.println(a + 1);
double b = Double.parseDouble(str1);
System.out.println(b + 1);
}
(3)toUpperCase和toLowerCase
这里的方法可以将字符串中的小写转化成大写,也可以将字符串中的大写转化成小写,这就很有意义了。
public static void main(String[] args) {
String str1 = "abCDEfg";
System.out.println(str1.toUpperCase());
System.out.println(str1.toLowerCase());
}
(4)toCharArray方法
该方法可以将字符串转化成字符数组,下面我们来看看吧
public static void main(String[] args) {
String str = "abcdef";
char[] array = str.toCharArray();
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
(5)replaceAll和replaceFirst方法
这两个方法是用新的字符串去替换原来字符串中的旧字符串,其中replaceAll方法是替换掉旧的字符串中的所有字符串,replaceFirst则是替换字符串中的第一个字符串
public static void main(String[] args) {
String str = "abcdabef";
String str1 = str.replaceAll("ab","AAA");
System.out.println(str1);
String str2 = str.replaceFirst("ab","AAA");
System.out.println(str2);
}
5.字符串的拆分和截取
(1) split方法
该方法可以将一个字符串,按照你传入的参数进行拆分,当你只传入一个字符串的时候,它就是按照你传入的字符串进行拆分
public static void main(String[] args) {
String str = "abcd&efg&hij";
String[] str1 = str.split("&");
for (String s:str1) {
System.out.println(s);
}
}
当你传入了一个字符串和一个整数的时候,它就会按照你整数的值将该字符串拆分成相应的组数,然后放入字符串数组中
public static void main(String[] args) {
String str = "abcd&efg&hij";
String[] str1 = str.split("&",2);
for (String s:str1) {
System.out.println(s);
}
}
(2)subString方法
这个方法可用于字符串的截取,当你传入一个整数时,该方法会从你所传入参数的下标位置截取到结尾,当你传入的是两个整数时,该方法会从你传入的下标位置截取到另一个下标位置,但是一定要注意在java中涉及范围问题一般都是左闭右开区间。
public static void main(String[] args) {
String str = "abcdef";
String str1 = str.substring(2);
System.out.println(str1);
String str2 = str.substring(2,4);
System.out.println(str2);
}
最后一定要注意这些对字符串处理的方法都是创建了一个新的字符串进行返回而不是在原来的字符串上进行修改,因为字符串是不可变的。