String类
创建字符串
项目中,字符串不可避免使用。字符串是引用类型,但是可以不用new,可以直接创建字符串
Strings="ABC123";//String直接创建Strings1="ABC123";//String直接创建StringS=newString("ABC123");//String 对象创建char[] a= { 'A', 'B', 'C', '1', '2', '3'}; Stringa=newString(a); System.out.println( a );//输出同样为ABC123
拼接字符串
string1.concat(string2); Strings1="hello"; Strings2="world"; s1.concat(s2); 或者使用"+""hello"+"world"
格式化字符串
一,格式化
1,格式化指令:描述要输出的特殊格式
2,要格式化的值
formact("%,d",2000000); Strings=String.formact("%,d",2000000); //逗号表示数字以逗号分开 System.out.println(s);//2,000,000//format()方法第一个参数被称为‘格式化串’,//他可以带有实际上要这么输出而不用转译的字符,而%符号会被方法其余参数替换掉的位置。//%表示第二个参数放置的位置,“.2f”表示要使用的格式,其余照常输出。format("there are %.2f apples",11.0987); //输出 there are 11.10 apples
3.格式化语法
%,d表示以十进制整数带有逗号方式来表示。%.2f代表小数点后两位的方式来格式化此浮点数%,.2f代表整数部分以带有逗号方式来表示,小数部分以后两位来格式化。
4.“格式化说明”的格式
%[argument_index$][flags][width][.precision]conversion
1.argument_index ⽤于表明参数在参数列表中的位置。
2. flags 特定类型的特定选项,例如数字要加逗号或者正负号。
3.width 最小字符数。
4. .precision 精确度(前面有圆点符号)
5.conversion 一定要指定的类型标识别
format("%,4.2f",36.789);
String方法
substring()
//截取字符串Stringsubstring (intstart ,intend); //String str="think in java"//传两个参数,含头不含尾,从指定位置开始到指定位置结束。//指定位置头包含,但尾不包含。Stringsub=str.substring(5,8); System.out.println("sub:"+sub);//sub:ing//传一个参数 ,从指定位置开始截取到末尾sub=str.substring(4); System.out.println("sub:"+sub);//sub:king in java
indexOf()
String indexOf()方法
int indexOf(String str): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
int indexOf(String str, int fromIndex): 返回从指定位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
Stringstr="thinking in java"; intindex=str.indexOf("in"); System.out.println("index:"+index);//index:2//从指定位置开始找index=str.indexOf("in",3); System.out.println("index:"+index);//index:5//查找最后一次出现指定字符串位置index=str.lastIndexOf("in"); System.out.println("index:"+index);//index:9
int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索,如果此字符串中没有这样的字符,则返回 -1。
StringStr=newString("www.baidu.com"); System.out.print("从第10个位置查找字符 u最后出现的位置 :" ); System.out.println(Str.lastIndexOf( 'u', 10 )); //从第10个位置查找字符 u最后出现的位置 :8
charAt()
charAt() 方法用于返回指定索引处的字符。
索引范围为从 0 到 length() - 1。
Stringstr="thinking in java"; charc=str.charAt(4); System.out.println(c);//k
trim()
trim() 方法用于删除字符串的头尾空白符。
返回删除头尾空白符的字符串
publicStringtrim() StringStr=newString(" www.baidu.com "); System.out.print("原始值 :" ); System.out.println( Str ); System.out.print("删除头尾空白 :" ); System.out.println( Str.trim() ); //原始值 : www.baidu.com //删除头尾空白 :www.baidu.com
toUpperCase(),toLowerCase()
大小写转换
Stringstr="java"Stringupper=str.toUpperCase();//JAVAStringlower=str.toLowerCase();//java
StringBuffer 和 StringBuilder 类
StringBuilder 用于提供修改字符串内容相关方法。
在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象。其内部维护的是一个可变的字符数组,所以修改的对象都是在当前对象内部完成的,当前频繁修改字符串内容是应当是在使用当前类完成的。
Strings="学好java"; //将String转换为StringBuilder可以使用有参的构造方法, //StringBuilder也有无参构造方法,默认表示空字符串StringBuilderbuilder=newStringBuilder(s); //从StringBuilder转换为String使用toString方法s=builder.toString(); //追加字符串builder.append(",我一定行!"); System.out.println(builder.toString());//学好java,我一定行!//替换字符串builder.replace(7,13,"come on"); System.out.println(builder.toString());//学好java,come on//删除字符串builder.delete(0,6); System.out.println(builder.toString());//,come on//插入字符串builder.insert(0,"jiayou"); System.out.println(builder.toString());//jiayou,come on//反转字符串builder.reverse(); System.out.println(builder.toString());//no emoc,uoyaij
StringBuffer是线程安全的,同步处理的,性能稍慢
StringBuilder 是非线程安全的,并发处理的,性能稍快
java 的字符串连接的过程是利用StringBuilder实现的。
Srtings="a"; Stirngs1=s+"b"+1; Strings1=newStringBuilder(s).append("b").append(1).toString();
这是java中 String方法,StringBuffer 和StringBuilder类的有关知识点,若有啥错误,欢迎大家指出,谢谢大家。