1.字符串和字符数组转换:toCharArray
//将字符串转换为字符数组:toCharArray()
String str = "hello";
char[] c = str.toCharArray();
//将字符数组转换为字符串
String s=new String(c);//取出完整的str:hello
String s=new String(c,0,2); //从0开始计数,0表示初始位置,2表示个数,则s的结果是he
String s=new String(c,1,3);//初始位置1,个数3,则s结果是ell
2.取出字符串指定的字符charAt
char ch=s.charAt(1);//从0开始计算,1则表示e
3.字符串与字节数组转换byte[]
String str = "hello";
byte[] b = str.getBytes();//字节数组要输出需要转换输出
System.out.println(new String(b));//同理能得hello
4.字符串长度length
String str="world";
str.length();//长度为5
5.字符串是否存在 indexof,lastIndexOf(最后出现的位子)
String str = "hello3e";
System.out.println(str.indexOf("a"));//a没有,所以返回-1,-1则表示没找到
System.out.println(str.indexOf("e"));//位子从0开始排,第一个e返回则为1
System.out.println(str.indexOf("e", 2));//加个数字2,则为第二个e,则返回6
System.out.println(str.lastIndexOf('l'));//最后个l出现位子 为3
6.去空格trim,去掉字符串左右的空格(不含字符串中间的空格)
String str=" hi ";
System.out.println(str.trim());//输出结果为hi,没有空格
7.字符串截取substring
String str = "hello3e";
System.out.println(str.substring(2));//得到'llo3e'
System.out.println(str.substring(1, 2));//得到'e'
System.out.println(str.subSequence(1, 2));//得到'e'
substring和subSequence的返回类型不一样,substring返回的是String,subSequence返回的是实现了CharSequence接口的类,也就是说使用subSequence得到的结果,只能使用CharSequence接口中的方法。不过在String类中已经重写了subSequence,调用subSequence方法,可以直接下转为String对象。
8.拆分字符串split
String str = "hello3e";
String[] s = str.split("l");
System.out.println(s.length);//s.length=3
for (int i = 0; i < s.length; i++) {
System.out.println(s[i]);
}
//此处s[0]为"he",s[1]为"",s[2]为“o3e”
9.字符串拼接 字符串可以split拆分,同样可以用concat拼接
String str = "hello";
String str2 = "HELlo";
str.concat(str2);
System.out.println(str.concat(str2));//返回结果:helloHELlo
把2个字符串拼接起来
10.大小转换toUpperCase,toLowerCase
String str = "hello3e";
String s = str.toUpperCase();
System.out.println(s);//转为大写:HELLO3E
String str = "HEllo3e";
String s = str.toLowerCase();
System.out.println(s);转为大写:hello3e
11.判断是否以某字符串开头,结尾startsWith,endsWith,返回的是boolean型
String str = "HEllo3e";
System.out.println(str.startsWith("H"));//true
System.out.println(str.startsWith("h"));//false
System.out.println(str.endsWith("E"));//false
System.out.println(str.endsWith("e"));//true
12.比较,不区分大小写equals, equalsIgnoreCse不区分大小写
str.equals(str2)返回的是boolean型
String str = "HEllo3e";
String s1 = "HEllo3e";
String s2 = "hello3e";
String s3 = "HELLO3E";
System.out.println(str.equals(s1));//true
System.out.println(str.equals(s2));//false
System.out.println(str.equals(s3));//false
System.out.println(str.equalsIgnoreCase(s1));//true
System.out.println(str.equalsIgnoreCase(s2));//true
System.out.println(str.equalsIgnoreCase(s3));//true
13.字符串代表的char值按指定的顺序相同的顺序contentEqualsString str1 = "amrood admin", str2 = "345"; CharSequence cs = "amrood admin"; System.out.println("Method returns: " + str1.contentEquals("amrood admin"));//true System.out.println("Method returns: " + str1.contentEquals(cs));//true System.out.println("Method returns: " + str2.contentEquals("12345"));//falsecontentEquals和equals的区别: contentEquals就是用来比较内容相同就行了 ,CharSequence,StringBuffer 都可以进行比较,只要内部char 相同排序相同就算一样。 equels方法是 如果这2个同一个字符串引用那么为true, 如果不是同一个引用那么如果二个对象都是String类型则会判断内部char是否相同并且排序一样, 如果一样就是true,除了这2中就为false。
14.查看是否包含,字符串中是否包含指定字符串/字符,返回的是boolean型
String str = "hello";
String str2 = "lo";
System.out.println(str.contains(str2));//hello中确实包含了lo,返回true
15.字符串替换replaceAll
String str = "HEllo3e";
String s1 = str.replace("l", "x");//将l转换成x
String s2 = str.replaceAll("l", "x");//将l转换成x
String s3 = str.replaceFirst("l", "x");//将第一个l转换成x
System.out.println(s1);//HExxo3e
System.out.println(s2);//HExxo3e
System.out.println(s3);//HExlo3e
此处,replace 和replaceAll有本质区别,replace可以是字符和字符串的替换,无异常
replaceAll用的是正则表达式的方法,第一个参数是替换规则。
此处如果这样写会有异常:
String str = "String.abc.com";
System.out.println(str.replaceAll(".", "/"));//输出结果为//
16.查询String类下,指定索引所对应的Unicode码,索引从0开始
codePointAt:指定索引所对应的Unicode码
String str = "HEllo3e";
System.out.println(str.codePointAt(0));//H的Unicode码:72
System.out.println(str.codePointAt(1));//E的Unicode码:69
System.out.println(str.codePointAt(2));//l的Unicode码:108
codePointBefore:指定索引之前所对应的Unicode码
String str = "HEllo3e";
System.out.println(str.codePointBefore(1));//H的Unicode码:72
codePointCount:准确计算unicode字符的数量,而不是char的数量。 String str = "HEllo3e"; str.codePointCount(1, 3); System.out.println(str.codePointCount(1, 3));//结果为"2",2个unicode字符 String greeting = "hello好"; int cpCount = greeting.codePointCount(0, greeting.length()); System.out.println(cpCount);//结果为"6",6个unicode字符 17.Comparable接口下的compareTo,compareToIgnoreCase String str = "2"; String str2 = "1";System.out.println(str.compareTo(str2));//1
System.out.println(str2.compareTo(str));//-1
多用于数字的比较,相同返回0,大了返回1,小了返回-1
String str = "hello"; String str2 = "hello";String s1 = new String("hello");System.out.println(str.compareTo(str2));//返回0 String str = "hello"; String str2 = "HELlo"; System.out.println(str.compareToIgnoreCase(str2));//忽略大小写,返回0 18.hashCode值。如果不改写,默认返回hashCode值 String str = "hello"; str.hashCode(); System.out.println(str.hashCode());//99162322 另外,对象的hashCode值显示很难看懂,最好定义下toString方法 19.intern
String s2 = s1.intern();
System.out.println(s2);//hello
System.out.println(s1 == s2);//true
intern 这个方法返回的是 返回字符串对象的规范化表示形式,当调用 intern 方法时,如果池已经
包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串
20.getClass()。返回类
String s1 = new String("hello");
s1.getClass();
System.out.println(s1.getClass()); //class java.lang.String
返回的是String类,并没有什么卵用的方法
21.isEmpty(),判断是否为空字符串
String s1 = new String("hello");
s1.isEmpty();
System.out.println(s1.isEmpty());//因为字符串s1不为空,则返回false
22.matches,正则表达式用此方法
String s1 = new String("hellolllo");
String regex = "[a-z]{1,10}";
System.out.println(s1.matches(regex));//true
23.notify(),notifyAll(),wait()
synchronized同步锁时使用,在此不做深究