public static void main(String[] args) { String s1 = "hello";//到常量池里找对象 String s2 = new String("hello"); s1 = "Tom"; s1 = "hello"+"Tom"; String s3 = "hello"; String s4 = new String("hello"); // ==判断是否为同一对象,判断内存地址 System.out.println(s1==s2);//false System.out.println(s2==s4);//false System.out.println(s1==s3);//false s1 = "hello"; System.out.println(s1==s3);//true }
字符串连接,返回连接后的串
1 String s1 = "hello";2 //concat 字符串连接,返回连接后的串3 s1 = s1.concat("tom");4 System.out.println(s1);//hellotom
字符串长度
System.out.println(s1.length());
比较字符序列是否相同,区分大小写
String s2 = "hellotom";System.out.println(s1.equals(s2));
比较字符序列是否相同,不区分大小写
String s3 = "HEllotom";System.out.println(s1.equalsIgnoreCase(s3));
大写兼容,全部转为大写
System.out.println(s1.toUpperCase());
小写兼容,全部转为小写
System.out.println(s1.toLowerCase());
首次出现的位置索引,没有返回-1
s1 = "hellohellotom";System.out.println(s1.indexOf("hello"));System.out.println(s1.indexOf("abc"));
最后一次出现的位置索引
System.out.println(s1.lastIndexOf("hello"));
取出某一个位置的字符
System.out.println(s1.charAt(0));//h
取字符串
//取子串(起始位置)取到最后System.out.println(s1.substring(10));//tom//[起始位置,终止位置) 不包括终止位置System.out.println(s1.substring(10, 13));//tom
去除字符串的首尾空格
s1 = " h e l l o t o m ";System.out.println(s1);// h e l l o t o m System.out.println(s1.trim());//h e l l o t o m
字符串替换(旧串,新串)用新串替换旧串
s1 = "hellotom";System.out.println(s1.replace(s1, "你好"));//你好//去掉是s1串中的所有空格s1 = " h e l l o t om ";System.out.println(s1.replace(" ", ""));//hellotom
判断是否以某个字符串结尾,是true,否false
s1 = "hello.java";System.out.println(s1.endsWith("java"));//true
startsWith
System.out.println(s1.startsWith("he"));//true
字符串比较大小
s1 = "abc";//unicode s1在参数之前,返回负数,s1在参数之后,返回正数,相对返回0System.out.println(s1.compareTo("cc"));//-2System.out.println(s1.compareTo("aa"));//1System.out.println(s1.compareTo("abc"));//0
是否包含指定参数的字符串,包含true,不包含false
System.out.println(s1.contains("bc"));//true
把字符串转换成字符数组
char[] c = s1.toCharArray();//'a','b','c'for(char cc:c) { System.out.print("字符:"+cc);//字符:a字符:b字符:c}
用某个字符串把原始字符串分割为一个字符串数组
s1 = "aa bb cc dd ee";String[] strs = s1.split(" ");//"aa","bb","cc","dd","ee"for(String ss : strs) { System.out.print("元素:"+ss);//元素:aa元素:bb元素:cc元素:dd元素:ee}
1 public static void main(String[] args) { 2 // String 常用的方法 3 String s1 = "hello"; 4 /* System.out.println(s1);//hello 5 s1 = s1 + "tom";// "hellotom" 6 */ 7 //连接字符串,返回连接后的串 8 s1 = s1.concat("tom");//"hellotom" 9 System.out.println(s1);//"hellotom"10 //字符串长(字符序列的个数)11 System.out.println(s1.length());//812 //equals比较字符序列是否相同 相同 true 区分大小写13 String s2 = "hellotoM";14 System.out.println(s1.equals(s2));//fasle15 //忽略大小写16 System.out.println(s1.equalsIgnoreCase(s2));17 //大小写兼容18 //大写19 System.out.println(s1.toUpperCase());20 //小写21 System.out.println(s1.toLowerCase());22 // zhangsan@163.com23 // 0123------------------------------------24 s1 = "hellohellotom";25 //位置索引26 //首次出现的位置索引 ,没有返回 -127 System.out.println(s1.indexOf("hello"));// 028 System.out.println(s1.indexOf("@"));//-129 //最后一次出现的位置索引30 System.out.println(s1.lastIndexOf("hello"));//531 //取出 某一个 位置 的字符32 System.out.println(s1.charAt(0));//'h'33 //取 子串 (起始位置) 取到最后34 System.out.println(s1.substring(10));//"tom"35 //[起始位置,终止位置) 不包括终止位置 36 System.out.println(s1.substring(10, 13));37 //----------------------------------------38 s1 = " h e l l o tom ";39 //去除字符串 的 首尾 空格40 System.out.println(s1.trim());41 //42 s1 = "hellotom";43 //字符串 替换 (旧串,新串) 用新串 替换 旧串44 System.out.println(s1.replace("hello","你好"));//"hello"->“你好”45 s1 = " h e l l o t om ";46 //问题:去掉 s1串 中的 所有空格47 System.out.println(s1.replace(" ", ""));48 //49 s1 = "hello.java";50 //判断 是否 以 某个 字符串 结尾 是 true 51 System.out.println(s1.endsWith("java"));//true52 //判断 是否 以 某个 字符串 开头 是 true 53 System.out.println(s1.startsWith("he"));//true54 //字符串 比较大小55 s1 = "abc";56 //unicode s1 在 参数之前 ,返回 负数 ,s1 在参数后 ,返回正数,相等 返回057 System.out.println(s1.compareTo("cc"));//-258 System.out.println(s1.compareTo("aa"));//159 System.out.println(s1.compareTo("abc"));//060 //-----------------------------------------61 //是否 包含 指定参数 的字符串 ,包含 true62 System.out.println(s1.contains("ab"));63 //把 字符串 转换成字符数组64 char [] c = s1.toCharArray();// 'a','b','c'65 for(char cc :c) {66 System.out.println("字符:"+cc);67 }68 //69 s1 = "aa bb cc dd ee";70 //用某个 字符串 把原始字符串 分割为 一个 字符串数组71 String [] strs = s1.split(" ");//"aa","bb","cc","dd","ee"72 for(String ss:strs) {73 System.out.println("元素:"+ss);74 }75 76 77 78 }
如果频繁更改字符串的值,不要用String类,效率低,用变长字符串类StringBuffer和StringBuilder类
返回容量
StringBuffer sf1 = new StringBuffer();//具备16个字符的缓冲区System.out.println(sf1.capacity());//16StringBuffer sf2 = new StringBuffer("hello");System.out.println(sf2.capacity());//21=16+5//直接规定缓冲区大小StringBuffer sf3 = new StringBuffer(100);System.out.println(sf3.capacity());//100
追加字符串
StringBuffer sf = new StringBuffer(50);sf.append("hello");System.out.println(sf);//hellochar[] c = { 'a','b','c'};sf.append(c,1,2);//bcSystem.out.println(sf);//hellobc
缩小容量为我存储的字符的个数大小
System.out.println(sf.capacity());//50sf.trimToSize();System.out.println(sf.capacity());//7
向索引位置插入一个字符串
System.out.println(sf);//hellobcsf.insert(5, "你好");System.out.println(sf);//hello你好bc
修改指定位置的一个字符
sf.setCharAt(5, '您');System.out.println(sf);//hello您好bc
删除指定位置索引的一个字符
sf.deleteCharAt(5);System.out.println(sf);//hello好bc
删除指定范围的字符串[起始位置,终止位置),不包括终止位置
sf.delete(5, 8);System.out.println(sf);//hello
获取指定索引处的字符
System.out.println(sf.charAt(1));//e
首次出现的位置索引,没有返回-1
System.out.println(sf.indexOf("l"));//2
最后一次出现的位置索引
System.out.println(sf.lastIndexOf("l"));//3
反转
System.out.println(sf);//hellosf.reverse();System.out.println(sf);//olleh
String类与StringBuffer类之间的转换
String str = sf.toString();StringBuffer sfr = new StringBuffer(str);
1 public static void main(String[] args) { 2 // StringBuffer StringBuilder 3 //String 不可变类 4 //如果频繁 更改字符串的值,不要用String效率低,用 变 长字符串类 StringBuffer StringBuilder 5 //StringBuffer 6 StringBuffer sf1 = new StringBuffer(); 7 //具备 16个字符的缓冲区 8 System.out.println(sf1.capacity());//16 9 StringBuffer sf2 = new StringBuffer("hello");10 //容量 11 System.out.println(sf2.capacity());//2112 sf2.append("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");13 System.out.println(sf2.capacity());//14 15 StringBuffer sf3 = new StringBuffer(100);16 System.out.println(sf3.capacity());17 18 //----------------StringBuffer--------------------------------19 StringBuffer sf = new StringBuffer(50);20 //容量21 System.out.println(sf.capacity());22 //追加字符串的23 sf.append("hello");24 char[] c = { 'a','b','c'};25 sf.append(c, 1, 2);//bc26 System.out.println(sf);//"hellobc"27 28 System.out.println(sf.capacity());29 //缩小容量为 我 存储的字符的个数大小30 sf.trimToSize();31 System.out.println(sf.capacity());32 System.out.println(sf);//"hellobc"//33 //向 索引 位置 插入一个字符串34 sf.insert(5, "你好");//"hello你好bc"35 System.out.println(sf);36 //修改 指定位置的一个 字符37 sf.setCharAt(5, '您');//"hello您好bc"38 System.out.println(sf);39 //删除 指定 位置索引的 一个 字符40 sf.deleteCharAt(5);//"hello好bc"41 System.out.println(sf);42 //删除 指定 范围 的字符串 【起始位置,终止位置)不包括 终止位置43 sf.delete(5, 8);44 System.out.println(sf);//"hello"45 46 System.out.println(sf.charAt(1));//e47 System.out.println(sf.indexOf("l"));//248 System.out.println(sf.lastIndexOf("l"));//349 50 //------------其它----------------------51 sf.reverse();52 System.out.println(sf);53 String str = sf.toString();//StringBuffer -> String54 //String - > StingBuffer55 StringBuffer sfr = new StringBuffer(str);56 //-----------------------------------------------------57 /*58 * String:定长字符串类,不可变类,表示一个简单的字符串 用 String59 * 但是,如果 字符串的值大量更改频繁更改 ,选择StringBuffer,StringBuilder60 * StringBuffer :线程安全的,数据准确,但速度慢61 * StringBuilder:线程非安全的,多线程环境下数据不准确,但是速度快。62 */63 //--------------------------------------------------64 }
StringBuffer:线程安全的,数据准确,但速度慢
StringBuilder:线程非安全的,多线程环境下数据不准确,但是速度快
正则表达式
用某种模式去匹配指定字符串的一种表达方式。
语法
表达式的模式:Matcher matcher = p.matcher();
验证:matcher.matches()
public static void main(String[] args) { //正则验证:邮政编码必须6位 //1.指定正则表达式[0-9]{6}或\\d{6} Pattern p =Pattern.compile("[0-9]{6}"); //2.指定要验证的数据 Matcher m = p.matcher("123456"); //3.验证 System.out.println(m.matches());//格式验证true }
作用
2.提供了更加丰富的功能。