5.1 String类
5.1.1 声明字符串
字符串是常量,它们可以显示任何文字信息,字符串的值在创建之后不能更改。在Java语言中,单引号中的内容表示字符,例如's',而双引号中的内容则表示字符串,例如:
"我是字符串","123456789","上下,左右,东西,南北"
Java通过java.lang.String这个类来创建可以保存字符串的变量,所以字符串变量是一个对象。
声明一个字符串变量a,以及声明两个字符串变量a、b。代码如下:
String a
String a,b;
5.1.2 创建字符串
给字符串变量赋值有很多方法,下面分别介绍。
1.引用字符串的常量
String a ="时间就是金钱,我的朋友。";
String b= "锄禾日当午",C ="小鸡炖蘑菇";
string strl, str2;
strl ="We are students";
srt2 = "We are students";
2.利用构造方法实例化
String a = new String ("我爱清汤小肥羊");
Stringb=new String(a) ;
3.利用字符数组实例化
char[] charArray ={'t','i','m','e',};
String a=new String(charArray);
4.提取字符数组中的一部分创建字符串对象
char[] charArray ={'时','间','就','是','金','钱' };
String a=new String(charArray,3,2);
例5.1
public class j { //创建类
public static void main(String[] args) { //主方法
// TODO Auto-generated method stub
String a="时间就是金钱,我的朋友."; //直接引用字符串常量
System.out.println("a="+a); //输出a =时间就是金钱,我的朋友
String b= new String("我爱清汤小肥羊"); //利用构造方法实例化
String c= new String(b); //使用已有字符串变量实例化
System.out.println("b="+b); //输出字符串b的变量
System.out.println("c="+c); //输出字符串c的变量
char[] charArray= {'t','i','m','e'}; //利用字符数组实例化
String d= new String(charArray); //利用字符数组实例化
System.out.println("d="+d); //输出字符串d的变量
char[]charArray2= {'时','间','就','是','金','钱'}; //利用字符数组实例化
//提取字符数组部分内容,从下标为4的元素开始,截取2个字符
String e= new String(charArray2,4,2); //提取字符数组部分内容,从下标为4的元素开始,截取2个字符
System.out.println("e="+e); //输出字符串e的变量
}
}
5.2.2 连接其他数据类型
字符串也可同其他基本数据类型进行连接。如果将字符串同这些数据类型进行连接,会将这些数据直接转换成字符串
例5.3
public class j {//创建类
public static void main(String[] args) {//主方法
// TODO Auto-generated method stub
int booktime=4;//声明的int型变量booktime
float practice=2.5f;//声明的float型变量practice
System.out.println("我每天花费"+booktime+"小时看书;"+practice+"小时上机练习");//将字符串与整型、浮点型变量相连,并将结果输出
}
}
5.3 提取字符串信息
字符串作为对象,可以通过相应的方法获取字符串的有效信息,如获取某字符串的长度、某个索引位置的字符等。本节将介绍几种获取字符串信息的方法。
5.3.1 获取字符串长度
length0方法返回采用UTF-16的编码表示字符的数量,也就是char的数量
str.length();
例如:定义一个字符串num,使用length()方法获取其长度。
string num ="12345 678910";
int size =num.length();
将size输出,得出的结果就是:
11
这个结果将字符串num的长度赋值给int型变量size,此时变量size的值为11,这表示length()方法返回的字符串长度包括字符串中的空格。
5.3.2 获取指定的字符
charAt(string index)方法将可指定索引出的字符返回。
str. charAt (index);
str: 任意字符串对象。
index: char值的索引。
例5.4
public class j {//创建类
public static void main(String[] args) {//主方法
String str="床前明月光,疑是地上霜。";//创建字符串对象str
char chr=str.charAt(4);//将字符串str中索引位置为4的字符赋值给chr
System.out.println("字符串中索引位置为4的字符是:"+chr);//输出chr
}
}
5.3.3 获取子字符索引位置
1.indexOf(String str)
语法如下:
a.indexof(substr);
a:任意字符串对象
substr:要搜索的字符串
查找字符e在字符串str中首次出现的索引位置;
string str ="We are the world";
int size =str.indexof('e'); //size的值为1
例5.5
public class j {//创建类
public static void main(String[] args) {//主方法
String str = "12345abcde"; // 创建字符串对象
int charIndex = str.indexOf("abc");// 获取字符串str中"abc"首次出现的索引,赋值给charIndex
if (charIndex != -1) {// 判断:index的值不等于-1
System.out.println("str中存在abc字符串");// 如果index不等于-1,则执行此行代码,说明str中存在“abc”字符串
} else {//else语句
System.out.println("str中没有abc字符串");//输出没有abc的字符串
}
}
}
2.indexOf(String srt,int fromindex)
语法如下;
a.indexof(str,fromindex);
a:任意字符串对象
str:要搜索的子字符串
fromindex:开始搜索的索引位置
例5.6
public class j { //创建类
public static void main(String[] args) { //主方法
// TODO Auto-generated method stub
String str = "We are the world"; // 创建字符串
int firstIndex = str.indexOf("r"); // 获取字符串中"r"第一次出现的索引位置
int secondIndex = str.indexOf("r", firstIndex + 1); // 获取字符串中"r"第二次出现的索引位置,从第一次出现的索引位置之后开始查找
int thirdIndex = str.indexOf("r", secondIndex + 1); // 获取字符串中"r"第三次出现的索引位置,从第二次出现的索引位置之后开始查找
System.out.println("e第一次出現的索引位置是:" + firstIndex); //输出e出现的第一次索引位置
System.out.println("e第二次出現的索引位置是:" + secondIndex); //输出e出现的第二次索引位置
System.out.println("e第三次出現的索引位置是:" + thirdIndex); //输出e出现的第三次索引位置
}
}
3.pubile int lastindexOf(String srt)
语法如下;
a.lastindexof(str);
a:任意字符串对象
str:要搜索的字符串
例5.7
public class j { //创建类
public static void main(String[] args) { //主方法
// TODO Auto-generated method stub
String str = "Let it go!Let it go!"; // 创建字符串对象
int gIndex = str.lastIndexOf("g"); // 返回”g“最后一次出现的位置
int goIndex = str.lastIndexOf("go"); // 返回”go“最后一次出现的位置
int oIndex = str.lastIndexOf("o"); // 返回”o“最后一次出现的位置
System.out.println("字符串\"Let it go!Let it go\"中:\n"); //输出字符串
System.out.println("\"g\"最后一次出现的位置是:" + gIndex); //输出”g“最后一次出现的位置
System.out.println("\"o\"最后一次出现的位置是:" + oIndex); //输出”o“最后一次出现的位置
System.out.println("\"go\"最后一次出现的位置是:" + goIndex); //输出”go“最后一次出现的位置
}
}
4.lastindexOf(String srt,int fromindex)
语法如下;
a.lastindexof(str,fromindex);
a:任意字符串
srt:要搜索的子字符串
fromindex:开始搜索的索引位置
例5.8
public class j { //创建类
public static void main(String[] args) { //主方法
// TODO Auto-generated method stub
String str = "01a3a56a89"; // 返回字母"a"最后一次出现的索引位置
int lastIndex = str.lastIndexOf("a"); //返回字母"a"的索引位置otherIndex
// 满足0<=fiveBeforeIndex<=5条件,在满足条件的结果集中,返回最大的数字
int fiveBeforeIndex = str.lastIndexOf("a", 5); // 返回字母"a"的索引位置otherIndex
int threeBeforeIndex = str.lastIndexOf("a", 3); // 满足0<=threeBeforeIndex<=3条件,在满足条件的结果集中,返回最大的数字
System.out.println("字符串\"01a3a56a89\"中:\n"); //输出字符串
System.out.println("字母\"a\"最后一次出现的位置是:" + lastIndex); //输出a最后一次出现的位置
System.out.println("从索引位置5开始往回搜索,字母\"a\"最后一次出现的位置:" + fiveBeforeIndex); //输出索引位置5开始往回搜索“a”最后一次出现的位置
System.out.println("从索引位置3开始往回搜索,字母\"a\"最后一次出现的位置:" + threeBeforeIndex); //输出索引位置3开始往回搜索“a”最后一次出现的位置
}
}
5.3.4 判断字符串首尾内容
1.starsWith(String prefix)
语法如下;
str.startsWith(prefix);
srt:任意字符串
prefix:作为前缀的字符串