1、String类:
(1)String类不需要new
(2)字符串是常量,它们的值在创建之后不能更改,但是变量的地址值是可以改变的。
例如:
package com.oracle.demo01; public class demo01 { public static void main(String[] args) { //字符串是免new的 String a = "abc"; a = "bbc"; } }
(3)字符串的本质是一个字符的数组。
(4)String str = new String("a");
在内存中有两个对象。一个new的对象在堆中,
一个字符串本身对象,在字符串常量池中.
(5)String类构造方法
package com.oracle.demo02; public class demo01 { public static void main(String[] args) { byte[] bytes = {-65,-67,68,69}; //如果是正数按照ASCII码表对byte数组进行解析,解析成字符 //如果是负数是汉字,并且一个汉字对应两个字节 /*String str = new String(bytes); System.out.println(str);*/ char[] chars = {'n','w','t'}; String str = new String(chars); System.out.println(str); } }
(6)String类的方法查找:
.length();.substring(i);.substring(i,j);
例如:
package com.oracle.demo03; public class demo01 { public static void main(String[] args) { //判断两个字符串是否内容相同(忽略大小写) System.out.println("NIHAO".equalsIgnoreCase("nihao")); String str = "hellojavanihaojava.text"; //截取字符串 System.out.println(str.substring(4)); //判断前缀 System.out.println(str.startsWith("b")); String str1 = "nihaojava"; //将字符串转为字节数组 byte[] b1 = str1.getBytes(); System.out.println(b1); for(int i = 0;i < b1.length;i++){ System.out.print(b1[i]+","); } char[] b2 = str1.toCharArray(); System.out.println(b2); for(int j = 0;j < b2.length;j++){ System.out.print(b2[j]+","); } } }
package com.oracle.demo04; public class demo01 { public static void main(String[] args) { String str1 = "abcdefg"; String str2 = ""; //判断该字符串的内容是否为空的字符串 System.out.println(str2.isEmpty());//true //获取给定的字符,在该字符串中第一次出现的位置 System.out.println(str1.indexOf("bc"));//1 //获取该字符串中指定位置上的字符 System.out.println(str1.charAt(3)); String str3 = "ABCDE"; //把该字符串转换成 小写字符串 System.out.println(str3.toLowerCase());//abcde /*System.out.println(str3.toLowerCase(Locale locale));*/ //把该字符串转换成 大写字符串 System.out.println(str1.toUpperCase());//ABCDEFG //在该字符串中,将给定的旧字符,用新字符替换 System.out.println(str1.replace('b','1'));//a1cdefg //在该字符串中,将给定的旧字符串,用新字符串替换 System.out.println(str1.replace("bc","abd"));//aabddefg //去除字符串两端空格,中间的不会去除,返回一个新字符串 String str4 = "\ta\tb\t"; System.out.println(str4+"hhh");// a b hhh System.out.println(str4.trim()+"hhh");//a bhhh } }
2、字符串缓冲区:
(1)StringBuffer:[可变字符序列]
(2)StringBuffer的方法使用:
.append(str);.delete(i,j);.inset(i,str);.replace(i,j,str);
package com.oracle.demo05; public class demo01 { public static void main(String[] args) { //创建字符缓冲区 StringBuffer sbb = new StringBuffer("abcdefghijk"); //替换 sbb.replace(0, 1, "ss"); System.out.println(sbb); //添加 sbb.append(true); System.out.println(sbb); //删除 sbb.delete(0, 1); System.out.println(sbb); //修改 sbb.insert(0, "a"); System.out.println(sbb); /*ssbcdefghijk ssbcdefghijktrue sbcdefghijktrue asbcdefghijktrue*/ } }
(3)对象的方法链式调用:
例如:只要返回值和调用对象类型相同
str.append().append().toString()
(4)StringBuilder类:
StringBuilder比StringBuffer快,但是不如StringBuffer安全;
3、正则表达式:
(1)正则表达式是一个字符串;
(2)匹配规则:【区分大小写字母】
例如:
package com.oracle.demo05; public class demo03 { public static void main(String[] args) { String str = "0533-3153666-000"; String regex = "-"; String[] flag = str.split(regex); for(int i = 0;i < flag.length;i++){ System.out.println(flag[i]); } } }
package com.oracle.demo05; public class demo02 { public static void main(String[] args) { String str = "17865164082"; String regex = "1[3,4,5,7,8][0-9]{9}"; boolean flag = str.matches(regex); System.out.println(flag); } }