Java从入门到精通第五章字符串笔记

第五章

  • 字符串:
    • String ;声明一个字符串:String a; String b

给字符串赋值:

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 的值是由ab拼接在一起得出的;
也可以用+=

例: 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”;

ifa==b{

相等;

}else{

不相等;

}

这时候判断字符串ab是否相等,结果是相等的;

但用

String a = new String("abcabcabc");

String b = new String(“abcabcabc”);

ifa==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);

}

结果:abababab,输出了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);

}

结果:111222 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)方法,判断字符串是否匹配给定的正则表达式,返回布尔值;

正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符; 

Java从入门到精通第五章字符串笔记_第1张图片


正则表达式限定符:

在正则表达式中可以使用限定修饰符来限定元字符出现的次数。


 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); //输出插入过bsbf的值;

结果为: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

Java从入门到精通第五章字符串笔记_第2张图片

String类似的方法;


StringBuilder

StringBuilber相似,但不锁定线程不安全

Java从入门到精通第五章字符串笔记_第3张图片

StringBuffe.StringBuilder.String之间的关系及转换方式;

Java从入门到精通第五章字符串笔记_第4张图片

StringBuffe.StringBuilder.String之间不同之处; 

Java从入门到精通第五章字符串笔记_第5张图片



你可能感兴趣的:(java入门到精通笔记)