一、声明字符串语法:String s;
二、创建字符串的两种方式:
(1)创建字符串对象时直接赋值
String s1 ="hello";
String s2 = "君不见黄河之水天上来";
注意:通过这种方式创建字符串时,当两个字符串引用相同的常量时,就会指向相同的实体,例如:
String str1,str2;
str1 = "How are you"; str2 = "How are you";
在上述代码中,str1和str2指向同一个对象,存储在同一个内存地址中。
(2)由一个字符串创建另一个字符串。例如:
String s1 = new String("hello");String s2 = new String("s1");
(3)由字符型数组来创建字符串,例如:
char[] c = {'a','b',"c",'d','e'};
String s1 = new String(c);//s1为"abcde"
String s2 = new String(c,2,3);//s2为"cde"
其中,创建s2时表示从该字符数组索引2的位置开始,提取3个元素,创建一个字符串
二、String类中常用的方法
(1)length():获取字符串的长度:str.length()
如:String s = "hello world!";int len = s.length();
(2)concat():字符串的连接;str1.concat(str2)
例如:String s1 = "hello";String s2 = "world";
String s3 = s1.concat(s2);//s3的值为"helloworld";
(3)<1> equals():字符串的比较:str1.equals(str2);
equals()方法比较两个字符串的内容是否相同,该方法的返回值为boolean型,如果两个字符串不为null且内容相同时,返回true,负责返回false。例如:
String s1 = new String("helloworld");//创建字符串,并赋值为“helloworld”
String s2 = new String("helloworld");//创建字符串,并赋值为"helloworld"
s1.equals(s2);//true
注意:当用"=="来比较两个字符串时,实际上是判断两个字符串是否为同一个对象,因此,即使字符串内容相同,由于它们是不同的对象(也就是对应的引用地址不同),返回值也为false。所以,上述代码中,"s1==s2"的值为false
<2>compareTo:按照字典顺序比较两个字符串的大小,其语法格式:str1.compareTo(str2);
其中str1和str2是字符串。该方法返回值为int类型,如果str1和str2相同,返回值为0;如果str1>str2,返回值大于为正值;如果str1<str2,返回值为负值。实际上,该方法的返回值等于两个字符串中第一个不相等的字符在Unicode字符集中位置的差值。例如:
String s = new String("abcde");
s.compareTo("body");//返回值为-1;
s.compareTo("aba");//返回值为2;
s.compareTo("abcde");//0;
在上述代码中,a,b,c在Unicode字符集中的位置分别为97,98,99,所以返回值分别为-1,2,0;
注意:如果想要比较两个字符串的内容是否相同,且比较时会忽略大小写,可使用equalsIgnoreCase()方法,其方法和equals()方法类似。
如果想要按照字典顺序比较两个字符串的大小,且比较时忽略大小写,可使用compareToIgnoreCase()方法,其方法与compareTo()方法类似。
(4)字符串的检索:1.根据字符查找
indexOf():返回字符(串)在字符中首次出现的索引位置,其语法格式为:str.indexOf(substr);
其中,str表示字符串,substr表示想要查找的字符(串),该方法的返回值为int型,它从str的头开始检索substr,并返回首次出现substr的位置(从0开始计算)。如果没有检索到substr,返回值为-1
lastIndexOf():返回字符(串)在字符串中最后出现的索引位置,其语法格式如下:str.lastIndexOf(substr)。
其中,str表示字符串,substr表示想要查找的字符(串)。该方法的返回值是int型,它从str的头开始检索substr,并返回最后出现的substr的位置(从0开始计算)。如果没有检索到substr,则返回值为-1
示例:在字符串I am a good student中检索字符a首次出现和最后出现的位置,可以使用以下 代码实现:
String s = new String("I am a good student");
s.indexof('a');//返回值为2
s.lastIndexof('a')//返回值为5
2.根据索引查找
charAt()方法可以在字符串中根据索引值查找字符,其语法格式如下:str.charAt(index);
其中,str表示字符串,index表示索引值,它从0开始。该方法的返回值是char型。
示例:String s = new String("I am a good student");
s.charAt[7];//返回值为‘9’;
(五)substring()字符串的截取
语法:str.substring(start); str.substring(start,end);
其中,str表示字符串,start和end表示起始索引和结束索引,为整形常量或表达式。该方法返回的是从start到end-1截取的字符串。如果不指定end,表示介去到指定字符串的末尾
示例:string china = "I love china"
str.substring(2,5);//s1为“lov”
str.substring(2);//s2为“love china”
(六)字符串的替换
1.replace()方法:实现将字符串的指定字符(串)替换成新字符(串),其语法格式如下:
str.replace(target,replacement);
其中str表示字符串,targe表示指定字符(串),replacement表示新字符(串)
示例:string s = "There iit a sheep";//定义字符串并且赋值
String temp = s.replace('t','s');//temp为“There is a sheep”;
2.replaceFirst()方法:实现将字符串中匹配的第一个字符串替换成新字符串,其语法:
str.replaceFirst(regex,replacement);
3.replaceAll()方法:实现将字符串中匹配的所偶字符串替换成新的字符串,其语法:
str.replacAll(regex,replacement);
其中,str表字符串,regex表示匹配的字符串,也可以是正则表达式,replacement表示新字符串。
示例:String s = "the cat on the three is small";
String t = s.replaceFirst("the","that");//t为"that cat on the three is small";
String v = s.replaceAll("the","that");//v为"that cat on that three is small";
区别:replace()方法的参数是字符或者字符串,但replaceAll()方法的参数只能是字符串
(六)字符串的大小写转换
toLowerCase()方法:实现将字符串中的所有字符转换成小写,其语法格式如下:
str.toLowerCase();
toUpperCase()方法:实现将字符串中的所有字符转换为大写,其语法格式为:
str.toUpperCase();
这两个方法都会返回一个新的字符串,长度和原字符的长度相同。如果原字符中包含非字母的字符,不会发生改变。示例:
String s = new String("Hello,小李");
s.toLowerCase();//返回值为"hello,小李"
s.toUpperCase();//返回值为"HELLO,小李"
(七)去除字符串中首尾空格
trim()方法实现去掉一个字符串的首位空格,其语法格式:str.trim();
示例:String s = " I am a student ";
String temp = s.trim();//结果为:"I am a student"
(八)判断字符串的内容
1、startsWith()方法:判断字符串是否以指定的前缀开始,其语法格式为:str.startsWith(prefix)
2、endsWith()方法:判断字符串是否以指定的后缀开始,其语法格式为:str.endsWith(suffix)
3、contains()方法:判断字符串中是包含指定的字符串,其语法格式:str.contains(string)
其中,str表示字符串,prefix表示作为前缀的字符串,suffix表示作为后缀的字符串,String表示指定的字符串。这3个方法的返回值都是boolean型示例:
String s = "华为手机";
s.startswith(("华为");//true
s.endsWith("电视");//true
s.contains("手机");//true
(九)字符串的分割lsplit()
split()方法可根据给定的分隔符对字符串进行拆分,其语法格式为:
s.split(refex);
其中,str表示字符串,regex表示分隔符,支持正则表达式。该方法返回一个字符串数组
示例:String s1 = "圆明园,颐和园,故宫";
Sting[] s2 = s1.split(",");//{圆明园,颐和园,故宫}
使用分隔符需注意以下几点:
1、在Java中,特殊字符作为split()方法的参数时,如“,”,“|”,“\”,“$”等,须进行转义。例如:使用“.”作为分隔符,须写成String.split("\\.")。
2、如果在一个字符串中有多个分隔符,可以用"|"作为连字符。例如:字符串s="aount=? and uu=? or n=?",如果以"and" 和"or" 作为分隔符,可以写成s.split("and|or")。
(十)获取字符数组
toCharArray()方法可将字符串转换为一个字符数组,其语法:
str.toCharArray();
其中,str表示字符串、。该方法返回一个字符数组。示例:
String s = "更上一层楼";
char[] c = s.toCharArray();//c为{'更','上','一',层','楼'}