1、基本知识
1、java中所有的双引号字符串,都是String类的对象 2、字符串不可变,他们的值在创建后不能被更改 3、虽然String的值是不可变的,但是它们可以被共享 字符串常量池:当使用双引号创建字符串对象的时候,系统会检查该字符串是否存在字符串常量池中存在 不存在:创建 存在:不会重新创建,而是直接复用
String s1 = "aaa";
String s2 = "aaa";
System.out.println(s1==s2);//true
String s3 = "aaa";
String s4 = new String("aaa");
System.out.println(s3==s4);//false
/*
当字符串之间使用+号串联(拼接)的时候,
系统底层会自动创建一个StringBuilder对象,
然后在调用其append方法完成拼接。
拼接后,在调用其toString方法转换为String类型
*/
String s5 = "aaa";
String s6 = "aa";
String s7 = s6 + "a";
System.out.println(s5==s7);//false
//Java存在常量优化机制,在编译的时候,就会把"a" + "b" + "c"拼接乘"abc"
String s1 = "abc";
String s2 = "a" + "b" + "c";
System.out.println(s1 == s2);//true
2、字符串比较
使用==做比较:
-
基本类型:比较的是数据值是否相同
-
引用类型:比较的是地址值是否相同
字符串是对象,它比较内容是否相同,是通过一个方法来实现的,这个方法叫:equals()
-
public boolean equals(Object anObject):将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数值传递一个字符串
String s1 = "abc"; String s2 = "ABC"; String s3 = "abc"; System.out.println(s1.equals(s2));//false System.out.println(s1.equals(s3));//true //equalsIgnoreCase()不考虑大小写比较 System.out.println(s1.equalsIgnoreCase(s2));//true
3、字符串遍历
-
public int length():返回此字符串的长度
-
数组的长度:数组名.length
-
字符串的长度:字符串对象.length()
-
public char charAt(int index):返回指定索引处的char值,字符串的索引也是从0开始的
String s = "abcde";
for(int i = 0 ; i < s.length() ; i++){
char c = s.charAt(i);
System.out.println(c);
}
-
public char[] toCharArray():将当前字符串拆分为字符数组并返回
String s = "abcdef";
//将字符串拆分为字符数组
char[] chars = s.toCharArray();
for(int i = 0; i < chars.length; i++){
System.out.println(chars[i]);
}
4、截取字符串
-
String substring(int beginIndex):
-
从传入的索引位置处,向后截取,一直截取到末尾,得到新的字符串返回
-
-
String substring(int beginIndex,int endIndex):
-
从beginIndex索引位置开始截取,截取到endIndex索引位置得到新的字符串返回(包含头,不包含尾)
-
Scanner sc = new Scanner(System.in);
System.out.println("请输入要屏蔽的号码:");
String num = sc.next();
String begin = num.substring(0,3);
String end = num.substring(7);
System.out.println(begin + "****" + end);
5、字符串替换
-
String replace(CharSequence target , CharSequence replacement)
-
将当前字符串的target(被替换的旧值)内容,使用replacement(替换的新值)进行替换,返回新的字符串
Scanner sc = new Scanner(System.in); System.out.println("请输入聊天内容:"); String s = sc.next(); String newS = s.replace("TMD","***"); System.out.println(newS);
-
6、切割字符串
-
String[] split(String regex):根据传入的字符串作为规则切割,将切割后的内容存入字符串数组中,并将字符串数组返回
Scanner sc = new Scanner(System.in);
System.out.println("请输入:");
String s = sc.nextLine();
String[] split = s.split(",");
String06_Student stu = new String06_Student(split[0], split[1]);
System.out.println(stu.getName()+"..."+stu.getAge());
7、StringBuilder
String的内容是不可变的-----StringBuilder内容是可变的
StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器
-
作用:提高字符串的操作效率
//可变字符串的解释代码 StringBuilder sb = new StringBuilder(); sb.append("红色"); System.out.println(sb);//红色 sb.append("蓝色"); System.out.println(sb);//红色蓝色 sb.append("绿色"); System.out.println(sb);//红色蓝色绿色
构造方法:
-
public StringBuilder():创建一个空白可变字符串对象,不含有任何内容
-
public StringBuilder(String str):根据字符串的内容,来创建可变字符串对象
StringBuilder的常用方法:
-
public StringBuilder append(任意类型):添加数据并返回对象本身
StringBuilder sb = new StringBuilder(); sb.append("蓝色").append("红色").append("绿色")
-
public StringBuilder reverse():返回相反的字符序列
sb.reverse(); //反转前是:蓝色红色绿色 //反转后是:色绿色红色蓝
-
public int length():返回长度(字符出现的个数)
-
public String toString():通过toString()就可以实现把StringBuilder转换为String
StringBuilder和String相互转化
-
StringBuilder转换为String
-
public String toString():转换方法
-
-
String转换为StringBuilder
-
public StringBuilder(String s):通过构造方法转换
-
String s = "aaa";
StringBuilder sb = new StringBuilder(s);
String Str = sb.toString();
以上就是自己自学中整理的一些关于String类用到的方法,快快收藏拿过去敲30遍++
会持续更新自己自学的笔记,耐心等待呀