第五章
给字符串赋值:
1.引用字符串常量;(掌握)
例:String =“老杨爱吃屎”;String str2=“abdcsfrdsf”;
2.利用构造方法直接实例化;(掌握)
public String (String original); //这是String构造方法;
使用:例:String a=new String (“老杨爱吃屎”);
3.利用字符数组实例化;(了解)
public String (char[] value); //这是构造方法
使用:例: char[] a={‘老’,’杨’,’吃’,’屎’ };
String a=new String (a );
4.利用字节数组实例化;(了解)
public String (byte[] bytes); //构造方法
使用:例: byte[] a={-60,-6,-70,-61};
String a = nue String(a );
字符串的拼接:
字符串用+号拼接;
例;String a=“abc”;String b=“123”;
String c=a+b; c=“abc123”;
c 的值是由a和b拼接在一起得出的;
也可以用+=;
例: String a=“123”;
a+=“456”;
结果:a=“123456”;
获取字符串的长度:
public int length ();
使用:例:String a=“123456789”;
int b=a.length();
结果:b的值是10;
注意:字符串的长度包括空格;
获取指定的字符的方法:
public char charAt (in index); //方法
使用:例:String name=“diao”;
char a=name.charAt(3);
结果为a=‘o’;charAt();括号中的为要获取的索引位子;
获取第一次出现的索引:
pubic int indexOf (String str);
使用:例: String a = “abcabcabc”;
int b=a.indexOf(“a”);
结果:b=0;因为这获取的是第一次出现的位置,a在第一位就出现了,也就为0位;
扩展:指定位置获取第一次出现的索引;
public int indexOf(String str ,int fromlndex);
使用:例: String a= “abcabcabc”;
int b=a.indexOf(a,4);
结果:b=6;因为从索引4开始获取,前面的a都直接忽略;
获取倒数第一次出现的索引:
public int lastIndexOf(String str);
使用例:String a=“abcabcabc”;
int b=a.lastIndexOf(“b”);
结果:b=7;因为从后往前找;
扩展:指定位置:
public int lastIndexOf(String str,int a);
使用:例: String a=“abcabcabc”;
int b=a.lastIndexOf(“b”,6);
结果:b=4;因为从索引6开始往前找,跳过了前面的b;
截取字符串:
从指定位置截取:
public String substring(int beginIndec);
使用:例:
String a = "abcabcabc";
String b = a.substring(3);
System.out.println(b);
结果:b=“abcabc”;从索引3截取(统一是从0下标开始数,第三位应该是0.1.2.3,以上都是如此计算;);
扩展:截取指定范围:
public String substring(int beginIndec,int endlndex );
使用:例:
String a = "340404199305040430";
String b = a.substring(6, 14);
System.out.println(b);
结果:b=“19930504”;从索引6截取,到索引14之前的位置;
去除首尾空白内容:
public String trim();
使用:例:
String a = " 222 ";
String b = a.trim();
System.out.println(b);
结果:b=“222”:空格已经被去除;
去除所有的空白内容;
.replaceAll("\\s", "")
使用:例:
String a = " 2 2 2 ";
String b = a.replaceAll("\\s", "");
System.out.println(b);
结果:b=“222”;与去首尾空白不同就是把trim()方法换成replaceAll("\\s", “")方法;
将旧字符串替换成新字符串:
public String replace(CharSequence target,CharSequence replacement );
使用例:
String a = "abcabcabc";
String b = a.replace("a", "d");
System.out.println(b);
结果:b=“dbcdbcdbc”;将所有的a替换成了b;
判断字符串结尾内容:
public boolean endsWith(String suffix);
使用例:
String a = "abcabcabc";
boolean b = a.endsWith(".java");
System.out.println(b);
结果:b=false;结果错误,字符串结尾并不相同;
判断字符串句首内容:
public boolean startsWith(String prefix );
使用例:
String a = "abcabcabc";
boolean b = a.startsWith("abc");
System.out.println(b);
结果:b=true;自然是一样的;
判断字符串是否相等:
public boolean equals(String anotherString );
使用例:
String a = new String("abcabcabc");
String b = new String(“abcabcabc");
boolean c = a.equals(b);
System.out.println(c);
结果:c=trne;不用的字符串,自然不等;
忽略大小判断字符串是否相等:
public boolean equalsIgnoreCase(String anotherString\);
使用例:
String a = new String("abcabcabc");
String b = new String("ABCABCABC");
boolean c = a.equalsIgnoreCase(b);
System.out.println(c);
结果:c=trne;忽略了大小写,直接判断,结果自然是相等的;
注意:
当用 String a=“aaaaaa”;
String b=“aaaaaa”;
if(a==b){
相等;
}else{
不相等;
}
这时候判断字符串a和b是否相等,结果是相等的;
但用
String a = new String("abcabcabc");
String b = new String(“abcabcabc”);
if(a==b){
相等;
}else{
不相等;
}
这时候用if判断是不相等的,只有用.equals();判断才是相等的;
字符串构成方法不同,结果也不同;
字符串大小写转换:
大写转换:
public String toUpperCare();
小写转换:
public String toLowerCare();
使用例:
String a = "aaaBBB";
String a1 = a.toLowerCase();
String a2 = a.toUpperCase();
System.out.println(a1);
System.out.println(a2);
结果:a1=“aaabbb”;a2=“AAABBB ”;
字符串分割:
public String[] split(String regex);
使用例:
String a = "abcabcabcabc";
String[] a1 = a.split("c");
for (String tme : a1) {
System.out.println(tme);
}
结果:ab,ab,ab,ab,输出了4个字符串
扩展:限制分割次数分割:
public String[] split (String regex ,int limit );
使用例:
String a = "111.222.333.4.0";
String[] a2 = a.split("\\.", 3);
for (String tme : a2) {
System.out.println(tme);
}
结果:111,222, 333.4.0三个字符串;
格式化字符串;
语法:
String.format(String format,Object…args);
例:
Date date=new Date();
String str=String.format(“%tF”,date);
System.out.print(str);
结果把date的值“Wed Mar 22 13:53:49 CST 2017”格式转换为了2017-03-22;这就是格式化字符串;“%tF”可以换成各种转换符;具体各种转换符请参考java从入门到精通p97.p98.p99
正则表达式:
正则表达式是一组公式,描述里一种字符串匹配的格式;
正则表达式通常被用于判断语句中,用来检测某一字符串是否满足某一格式。我们可以调用String中的Matches(String regex)方法,判断字符串是否匹配给定的正则表达式,返回布尔值;
正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符;
正则表达式限定符:
在正则表达式中可以使用限定修饰符来限定元字符出现的次数。
StringBuffer类
StringBuffer是线程安全的可变字符序列。一个类似于String的字符串缓冲区。前面介绍String创建的字符串对象是不可修改的,而StringBuffer类创建的是可修改的字符串序列,具实体容量会随着存放的字符串增加而自动增加;
追加字符序列方法:
语法:
append(content)
content表示要追加到字符串生成器的内容,可以是任何数据或者其他对象;
例:
StringBuffer sbf = new StringBuffer("abcd"); //创建对象sbf,并实例化
sbf.append("efg"); //为sbf追加字符串efg
System.out.println(sbf); //输出追加后的sbf
结果为abcdefg;
修改指定索引处的字符:
语法:
public void setCarAt(int index,char ch)
将给定索引处(index)的字符修改为(ch)。
例:
sbf.setCharAt(3, 'a'); //将sbf对象中的字符串的索引3位置的字符替换成a
System.out.println(sbf);//输出替换过的sbf
结果为:abcaefg;
插入字符串:
public StringBuffer insert(int offset,String srt)
将字符串(srt)插入索引(offset)所指的字符序列中;
例:
sbf.insert(4, "b"); //在sbf对象中的字符串的索引位置4插入b,也就是索引4变成b
System.out.println(sbf); //输出插入过b的sbf的值;
结果为:abcabefg;
字符串反序:
public StringBuffer reverse();
该方法可以将字符串反序输出,就是倒着读;
例:
sbf.reverse(); //将sbf中的字符串反序;
System.out.println(sbf); //输出反序后的sbf
结果为:gfebacba;
删除子字符串;
语法:
public StringBuffer delete(int start,int end);
移除此序列的子字符串的字符。该字符串是从索引start开始,到end-1为止,如果end-1超出最大范围,则一直到序列尾部。如果start==end,则不发生改变;
例:
sbf.delete(3, 5); //从索引3开始删除到5-1,也就是4索引的位置,删除两位;
System.out.println(sbf); //输出删除后的sbf
结果:gfecba;
与String类似的方法;
StringBuilder
与StringBuilber相似,但不锁定线程不安全
StringBuffe.StringBuilder.String之间的关系及转换方式;
StringBuffe.StringBuilder.String之间不同之处;