导图社区 字符串(String)
java字符串相关内容的总结归纳
编辑于2018-11-21 14:08:42字符串(String)
定义:是由字符组成的序列,在java中字符串是对象
如何构造一个字符串
String S1= new String("dfasdf");
String s1 = "fajfs";
char [] arr1 = {'h','e','l','l','o'}; String arr2 = new String(arr1); System.out.println(arr2);
用字符数组创建一个字符串。
限定字符串与不可变字符串
限定字符串
价值:因为字符串在程序设计中是不可变的 ,但同时又会频繁使用。java虚拟机为了提高效率 并节约内存,并具有相同字符串序列的字符串直接量使用同一个实例。
使用
String s2 = "123"; String s3 ="123";
不可变字符串
字符串的操作
字符串的比较
equals
价值:是比较字符创对象是否相等
使用
String s1 = new String("123"); String s2 = "123"; boolean flag = s1.equals(s2); System.out.print(flag);
==
价值:是比较字符创是否指向同一对象
使用
public static void main(String[] args) { String s1 = new String("123"); String s2 = "123"; boolean flag = (s1==s2); System.out.print(flag);
compareTo
定义:两个字符创相比较,设第一个字符串为c1,设第二个字符串为c2 ,如果s1 = s2,那么返回0,如果s1>s2,那么返回大于0,如果s1<s2 ,那么返回值小于0.
比较流程: 是根据字典序进行比较
使用
//compareTo int flag1 = s1.compareTo(s2); System.out.println(flag1);
equalsIgnoreCase(String)
价值: 判断两个字符创是否相等, 并忽略大小。
使用
String a = "abcdef"; String b = "ABCDEF"; boolean flag2 = a.equalsIgnoreCase(b);
compareToIgnoreCase(String)
价值: 定义:两个字符创相比较,设第一个字符串为c1,设第二个字符串为c2 ,如果s1 = s2,那么返回0,如果s1>s2,那么返回大于0,如果s1<s2 ,那么返回值小于0.另外忽略大小。
使用
String a = "abcdef"; String b = "ABCfDEF"; boolean flag2 = a.equalsIgnoreCase(b); //compareToIgnoreCase //作用:比较两个字符串,进行比较。 int k = a.compareToIgnoreCase(b); System.out.println(k);
获取字符串的长度,以及形成新的组合字符串
获取字符串的长度
使用
int a1 = a.length(); System.out.println(a1+"ge");
如何组成新的字符串
方法: concat(s1:String);
使用
System.out.println(b.concat(a));
获取子串
方法:
substring(beginIndex:int);
价值: 返回这个字符串从指定的开始的并延续到末尾的子串。
使用
String a = "123456789"; String k = a.substring(1); System.out.println(k);
substring(beginIndex:int endIndex:int);
价值: 返回这个字符串从指定的开始的并延续到指定 末尾的子串。注意:endIndex不是子串的一部分,所有 到endIndex-1.
使用
String a = "123456789"; String k = a.substring(1); System.out.println(k);
字符串的转换
toLowerCase();
作用:返回将所有字符都转换成小写之后的字符串
使用
String a = "Abafcddfjsdaf"; String k = a.toLowerCase(); System.out.println(k);
toUpperCase();
作用: 返回将所有字符都转换成大写之后的字符串
使用
String a = "Abafcddfjsdaf"; String k = a.toUpperCase(); System.out.println(k);
字符串的替换
replace(oldchar,new char)
价值: 返回用一个新字符替换这个字符串中的所有和它匹配的 字符的新字符串。
使用
String a = "Abafcddfjsdaf"; String k = a.replace('a', 'A'); System.out.println(k);
replaceFirst(oldString,newString)
价值: 返回用一个新子串替换这个字符串中第一个和它匹配的子串的新字符串
使用
String a = "Abafcddfjsdaf"; String k = a.replaceFirst("ba","AbC"); System.out.println(k);
replaceAll(old String,new String);
价值: 返回一个用新子串替换这个字符串中所有和它匹配的子串之后的新字符串。
使用
String a = "abcd123abcd123"; String k = a.replaceAll("abc","AbC"); System.out.println(k);
字符串的分隔
split(String):String[]
价值: 返回用定界符分隔的字符串所有和它匹配的子串之后 的新字符串数组
使用
String [] a = "abc#def#ghi#jkl#mn".split("#"); for(int i=0;i<a.length;i++) { System.out.print(a[i]+" "); } 分隔符不显示。
找出字符串中的某个字符或子串的下标
indexOf();
分类:
indexOf(char);int
价值: 返回字符串中第一次出现的下标, 如果不匹配则返回-1
使用
String a = "123456#abcd#fdj"; int k = a.indexOf('1'); System.out.println(); System.out.println(k);
indexOf(String)
lastIndexOf();
同上
价值: 赶回字符串中最后一次出现的下标。不匹配就返回-1
使用:同上
字符的操作
获取特定的字符
方法:charAt(index:int);
使用
char s6 = a.charAt(3); System.out.println(s6); 注意:越界访问字符。 下标不能超过s6.length()-1 不然会造成StringIndexOutOfBoundException异常。
StringBuilder/StringBuffer类
定义: StringBuilder/StringBuffer类是可以替代String类的另一种 处理字符串的解决方案。一般来说,只要使用字符串的地方,都可 使用这两个类。
StringBuilder/StringBuffer类与String类的区别
比String类更灵活
StringBuilder/StringBuffer类可以添加、插入新的内容, 但String不可改变
场景:何时使用StringBuffer类,何时使用StringBuilder类
StringBuilder,单并发任务
StringBuffer,多并发任务
使用:
自查API