1声明字符串
在Java语言中,字符串必须包含在一对双引号(“”)之内。例如:
"23.23"、"ABCDE"、“你好”
以上这些都是字符串常量,字符串常量可以是系统能够显示的任何文字信息,甚至可以是单个字符。
可以通过以下语法格式来声明字符串变量:
String str;
String:指定该变量为字符串类型
str:任意有效的标识符,表示字符串变量的名称。
声明字符串变量s,代码如下:
String s;
10.1.2 创建字符串
在Java语言中,将字符串作为对象来处理,因此可以像创建其他类对象一样来创建字符串对象。创建对象要使用类的构造方法。String类的常用的构造方法如下:
1、String(char a[])
该方法用一个字符数组a创建String对象,代码如下:
char a[]{'g','o','o','d'};
String s = new String(a); 等价于String s = new String("good")
2、String(char a[],int offset,int length)
该方法提取字符数组a中的一部分创建一个字符串对象。参数offset表示开始截取字符串的位置,length表示截取字符串的长度。代码如下:
char a[] = {'s','t','u','d','e','n','t'};
String s = new String(a,2,4); 等价于String s = new String("uden");
3、String(char[] value)
该构造方法可分配一个新的String对象,使其表示字符数组参数中所有元素连接的结果。代码如下:
char a[]={'s','t','u','d','e','n',t'};
String s = new String(a); 等价于 String s = new String("student");
除通过以上几种使用String类的构造方法来创建字符串变量外,还可通过将字符串常量的引用赋值给一个字符串变量来创建字符串。代码如下:
String str1,str2;
str1 = "We are students"
str2 = "We are students"
此时,str1与str2引用相同的字符串变量,因此具有相同的实体,内存示意图如下图所示:
10.2 连接字符串
10.2.1 连接多个字符串
使用“+”运算符可实现连接多个字符串的功能。“+”运算符可以连接多个String对象并产生一个新的String对象。
【例10.1】先连接一副对联的上、下联,再分行输出在控制台上
代码如下:
-
public class Join {
-
public static void main(String[] args) {
-
// TODO Auto-generated method stub
-
String s1 = new String("春色绿千里");
-
String s2 = new String("对马蹄香万家");
-
String s = s1+"\n"+s2;
-
System.out.println(s);
-
}
-
}
运行结果如下:
2 连接其他数据类型
字符串也可同其他基本数据类型进行连接。如果将字符串同其他数据类型数据进行连接,会将其他数据类型的数据直接转换为字符串。
【例10.2】统计每天的阅读和上机时间
代码如下:
1.public class Link {//创建类
-
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+"小时上机练习");
-
}
-
}
10.3 获取字符串信息
10.3.1获取字符串长度
使用String类的length()方法可获取声明的字符串对象的长度。语法如下:
str.length();
其中,str为字符串对象。
获取字符串长度,代码如下:
String str = "We are students";
int size = str.length();
上段代码是将字符串str的长度赋值给int型变量size,此时变量size的值为15,这表示length()方法返回的字符串的长度(包括字符串中的空格)。
10.3.2 字符串查找
String类提供了两种查找字符串的方法,即indexOf()与lastIndexOf()方法。
1、indexOf(String s)
该方法用于返回参数字符串s在指定字符串中首次出现的索引位置。当调用String类的indexOf()方法时,会从当前字符串的开始位置搜索s的位置。如果没有检索到字符串s,该方法的返回值是-1.语法如下:
str.indexOf(substr)
查找字符a在字符串str中的索引位置,代码如下:
String str = "We are students";
int size = str.indexOf("a");
2.lastIndexOf(String str)
该方法用于返回指定字符中最后一次出现的索引位置。当调用String类的lastIndexOf()方法时,会从当前字符串的开始位置检索参数字符串str,并将最后一次出现str的索引位置返回。如果没有检索到字符串str,该方法返回-1.语法如下:
str.lastIndexOf(substr)
例10.3】用两种方式判断字符串的长度
10.3.3获取指定索引位置的字符
使用charAt()方法可将指定索引处的字符返回。语法如下:
str.charAt(int index)
【例10.4】查看指定索引位置上的字符
10.4 字符串操作
10.4.1获取字符串
例10.5】《将进酒》的作者是哪位诗人?
10.4.2去除空格
trim()方法返回字符串的副本,忽略前导空格和尾部空格。语法如下:
str.trim()
其中,str为任意字符串对象。
【例10.6】去掉字符串首、尾的空格
10.4.3字符串替换
10.4.4判断字符串的开始与结尾
startsWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都为boolean类型
1、startsWith()方法
该方法用于判断当前字符串对象的前缀是否为参数指定的字符串。语法如下:
str.startsWith(String prefix)
其中,prefix是指作为前缀的字符串。
2、endsWith()方法
该方法用于判断当前字符串是否为以给定的子字符串结束。语法如下:
str.endsWith(String suffix)
其中,suffix是指作为后缀的字符串。
10.4.5判断字符串是否相等
1.equals()方法
如果有两个字符串具有相同的字符和长度,则使用equals()方法进行比较时,返回ture。否则,返回flase。语法如下:
str.equalslgnoreCase(String otherstr)
2.equalslgnoreCase()方法
使用equals()方法对字符串进行比较时是区分大小写,而使用equalsIgnoreCase()方法是在忽略了大小写的情况下比较两个字符串是否相等,返回结果仍为boolean类型,语法如下:
str.equalsIgnoreCase(String otherstr)
1、toLowerCase()方法
该方法将字符串的所有大写字母转换为小写。如果字符串中没有应该被转换的字符,则将原字符串返回。否则返回一个新字符串,将原字符串中每个小写字母都转换成大写,字符串长度不变。语法如下:
str.toLowerCase()
2.toUpperCase()方法
该方法将字符串所有的小写字母转换为大写。如果字符串中没有应该被转换的字符,则将原字符串返回,否则返回一个新字符串,将原字符串中每个小写字母都转换成大写,字符串长度不变,语法如下:
str.toUpperCase()
10.4.8字符串分割
1、split(String sign)
该方法可根据给定的分割符对字符串进行拆分,语法如下:
str.split(String sign)
其中,sign为分割字符串的分割符,也可以使用正则表达式。
2、split(String sign.int limit)
该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数。语法如下:
str.split(String sign.int limit)
【例10.12】按要求分割“192.168.0.1”
10.5格式化字符串
1、format(String format,Object...args)
该方法使用指定的格式字符串和参数返回一个格式化字符串,格式化后的新字符串使用本地默认的语言环境。语法如下:
str.format(String format,Object...args)
2、format(Local I,String format,Object...args)
该方法使用指定的语言环境,格式字符串和参数返回一个格式化字符串,格式化后的新字符串使用其指定的语言环境。语法如下:
str.format(Local I String format,Object...args)
10.5.1 日期和时间字符串格式化
1、日期格式化
先来看一个例子。返回一个月中的天数,
代码如下:
Date date = new Date();//创建Date对象date
String s = String.format("%te",date);//通过format()方法对date进行格式化