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
使用==做比较:
基本类型:比较的是数据值是否相同
引用类型:比较的是地址值是否相同
字符串是对象,它比较内容是否相同,是通过一个方法来实现的,这个方法叫: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
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]); }
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);
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);
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());
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遍++
会持续更新自己自学的笔记,耐心等待呀