营销网站的案例分析,找网站推广,莱州一中网站,深圳网站建设公司服务商1 String中的常用方法2
1.1 split方法 将字符串按照指定的内容进行分割#xff0c;将分割成的每一个子部分组成一个数组 分割内容不会出现在数组中 实际上该方法不是按照指定的简单的符号进行分割的#xff0c;而是按照正则表达式进行分割 1.2 正则表达式 用简单的符号组合…1 String中的常用方法2
1.1 split方法 将字符串按照指定的内容进行分割将分割成的每一个子部分组成一个数组 分割内容不会出现在数组中 实际上该方法不是按照指定的简单的符号进行分割的而是按照正则表达式进行分割 1.2 正则表达式 用简单的符号组合表示更为复杂的字符串内容 可以对某一个字符串进行内容检测看看目标字符串是否包含正则所表示的那部分子串内容 检测成功后可以根据需求作进一步的处理包括替换分割等 在String字符串中提供了下面几个与正则相关的方法 s.matches(\\d); 全串检测 s.split(\\d); 拆分 s.replaceAll(\\d,A); 替换 符号表示 a 要求字符串中包含一个字母a ab 要求字符串中包含ab这样一组连续的字符 a|b 要求字符串中包含a或b字母 [^abcd]要求字符串中包含abcd中至少一个 (ab)|(cd) 要求字符串中包ab或cd组合中的一个 [a-z] [A-Z] [0-9] [a-zA-Z0-9] \d 表示所有所有数字 [0-9] \w 表示所有字符 \s 表示空格 \D \W \S 表示除xx以外 . 表示所有符号 注意1 \d中的\是正则表达式中的转义我们现在要在java程序中需要再增加一个\ \\d
注意2 在正则中.表示所有符号。如果我们就像表示.这个符号 ,需要对.进行转义 \\. 数量表示 a{2} 表示字符串中包含两个连续的a a{,3}表示字符串中包含最多3个连续的a a, aa , aaa a{1,}表示字符串中包含至少1个连续的a a{1,3}表示字符串中包含1到3个连续的a a 表示字符串中至少包含1个连续的a a*表示字符串中包含0或多个a a?表示字符串中包含0或1个a
public static void main(String[] args) {
// String reg ((139)|(136)|(171)|(196))\\d{8} ;
// String s 13613640262 ;
// System.out.println(s.matches(reg));
// if(s.startsWith(139) || s.startsWith(136)||s.startsWith(137) s.length() 11)// aqq.com
// String reg ([0-9a-zA-Z].*)((qq)|(163)|(sina))\\.((com)|(cn)) ;
// String s aaa126.com;
// System.out.println(s.matches(reg));String reg (136)|(137)|(138) ;String s a136b137c138d ;String abc s.replaceAll(reg, ABC);System.out.println(abc);}
1.3 intern方法 使用方式常见的字符串对象会在堆的常量区中开辟存储空间。并且只会保留一份 intern方法的作用是将使用new关键字创建的字符串对象(地址)尝试从堆区移动到常量区 public static void main(String[] args) {
// String s1 new String(new char[]{a,b,c});
// String s2 abc ;
// System.out.println(s1 s2);// String s1 new String(new char[]{a,b,c});
// s1.intern();
// String s2 abc ;
// System.out.println(s1 s2);// String s1 new String(abc);
// s1.intern();
// String s2 abc ;
// System.out.println(s1 s2);// String s1 new String(new char[]{j,a,v,a});
// s1.intern() ;
// String s2 java ;
// System.out.println(s1 s2);
}
2 StringBuilder可变字符串 可变字符串有两个 StringBuilder 和 StringBuffer 两个类有相同的api StringBuffer是一个早期版本的可变字符串线程同步安全性高性能较低 StringBuilder是一个新版本的可变字符串非线程同步安全性较低性能较高
2.1 创建StringBuilder对象 只有一种创建手段使用new 构造方法
StringBuilder s new StringBuilder(); //创建了没有任何内容的可变字符串对象
StringBuilder s new StringBuilder(ab);//创建了一个有初始内容的可变字符串对象//也可以理解成将String转换成了StringBuilder
StringBuilder s new StringBuilder(10);//创建了一个没有任何内容的可变字符串//但指定了内部字符数组的容量//这个容量默认是16个 2.2 StringBuilder字符串的可变特性 String字符串的不可变原因 用来存储字符串内容的数组变量使用final修饰不能再指向其他长度的字符数组地址长度不可变 从封装设计角度String没有对外提供可以改变字符数组内容的方法所以内容无法改变 StringBuilder字符串可变的原因 用来存储字符串内容的数组变量没有使用final修饰可以指向长度更长的字符数组扩容 从封装设计角度而言StringBuilder对外提供了可以直接更改字符数组内容的方法 append insert delete 2.3 StringBuilder常用方法
public static void main(String[] args) {StringBuilder s new StringBuilder();s.append(a); //字符串结尾追加新内容s.append(bc);s.append(def) ;System.out.println(s);System.out.println(-----------------);s.insert(2,g); //在字符串的指定位置插入新内容System.out.println(s);System.out.println(------------------);s.delete(1,4) ; //删除指定位置范围内的内容 左闭右开System.out.println(s);System.out.println(-----------------);s.replace(1,3,xyz); //替换指定位置范围内的内容左闭右开System.out.println(s);System.out.println(--------------------);s.reverse(); //反转字符串内容 System.out.println(s);String ss s.toString() //将StringBuilder转换换成String对象可以使用String的方法了}
3 String字符串连接 有两种方式 使用连接两个字符串 abc bcd 使用concat方法连接两个字符串 abc.concat(bcd) 使用concat方法连接字符串没有特别之处底层产生了一个新的字符串对象包含两个子串内容 使用号连接字符串这里涉及一个 运算符重载特点 在使用号连接字符串时会先产生一个StringBuilder对象利用StringBuilder的append方法完成字符串的追加连接 将连接后的完整内容形成一个String对象返回
注意 当需要一次性大量的连接多个字符串时建议使用号连接 当只需要连接两个字符串时建议使用concat方法连接
String s1 abc ;
String s2 bcd ;
String s3 s1 s2 ; 注意 多个字符串常量使用号连接时不会产生StringBuilder。而是在编译期就直接将字符串合并了 编译期会对常量值做优化
public static void main(String[] args) {String s1 abc def ;String s2 abcdef ;System.out.println(s1 s2);
} public static void main(String[] args) {String s1 abc ;String s2 def ;String s3 s1 s2 ;String s4 abcdef ;System.out.println(s3 s4);
} public static void main(String[] args) {fina String s1 abc ;final String s2 def ;String s3 s1 s2 ;String s4 abcdef ;System.out.println(s3 s4);
}