10.1 String类
10.1.1 声明字符串
字符串必须包含在一对双引号(“”)之内。例如:
"23.23"、"ABCDE"、"你好"
String str;
String: 指定该变量为字符串变量类型;
str:任意有效的标识符,表示字符串变量的名称。
声明字符串变量s,代码如下:
String s;
10.1.2 创建字符串
1. String(char a[])
2. String(char a[],int offset,int length)
3. String(char[] value)
例如:
package tenbao;
public class Test {
public static void main(String[] args) {
//字符串变量的声明
String s;
//字符串变量初始化
// s = "你好";
s = new String("你好");
System.out.println(s);
//字符串变量初始化 传入字符类型数组
char[] ch = {'g','o','o','d'};
String st = new String(ch);
System.out.println(ch);
//字符串变量的初始化 传入字符串类型数组,初始索引号,个数
char[] chr = {'s','t','u','d','e','n','t'};
String str = new String(chr,2,4);
System.out.println(str);
//字符串相连接
System.out.println(s + st);
//字符串与其他相连接
System.out.println(1.6 + str + 3);
}
}
10.2 连接字符串
10.2.1 连接多个字符串
使用 “+” 运算符可实现连接多个字符串的功能。
例题10.1:
package tenbao;
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);
}
}
10.2.2 连接其他数据类型
例题10.2:
package tenbao;
public class Link {
public static void main(String[] args) {
// TODO Auto-generated method stub
int booktime = 4;
float practice = 2.5f;
//将字符串与整数类型、浮点类型相连、并将结果输出
System.out.println("我每天花费" + booktime + "小时看书:" + practice + "小时上机练习");
}
}
10.3 获取字符串信息
10.3.1 获取字符串长度
使用String类的length()方法可获取声明字符串对象的长度。
获取字符串长度,代码:
String str = "We are student";
int size = str.length();
10.3.2 字符串查找
1.indexOf(String s)
该方法用于返回参数字符串 s 在指定字符串中首次出现的位置。如果没有检索到字符串 s ,该方法返回 -1
查找字符 a 在字符串 str 中的索引位置,代码:
String str = "We are student";
int size = str.indexOf('a');
2.lostindexOf(String str)
该方法用于返回参数字符串 s 在指定字符串中最后一次出现的位置。如果没有检索到字符串 s ,该方法返回 -1
说明:
如果 lostindexOf()方法中的参数是空字符串 "" (注意没有空格),则返回的结果与调用 length()
方法的返回值相同。
例题10.3:
package tenbao;
public class Test {
public static void main(String[] args) {
String str = "We are student";
int size = str.lastIndexOf("");
System.out.println("空字符串在字符串 str 中的索引位置是:" + size);
System.out.println("字符串 str 的长度为" + str.length());
}
}
10.3.3 获取指定索引位置的字符
使用 charAt(int index)方法可指定索引处的字符返回。语句如下:
str.charAt(int index)
例题10.4:
package tenbao;
public class Ref {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "hello world";
char mychar = str.charAt(6);
System.out.println("字符串 str 中索引位置是 6 的字符为:" + mychar);
}
}
10.4 字符串操作
10.4.1 获取子字符串
1. substring(int beginIndex)
该方法返回的是从指定的索引位置开始截取直到该字符串结尾的字串。语法如下:
str.substring(int beginIndex)
2. substring(int beginIndex,int endIndex)
该方法返回的是从字符串某一索引位置开始到某一位置结尾的字串。语法如下:
str.substring(int beginIndex,int engIndex)
例题10.5:
package tenbao;
public class Subs {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "《将进酒》:李白(唐)";
String substr = str.substring(6,8);
System.out.println("《将进酒》的作者是" + substr);
}
}
10.4.2 去除空格
trim() 方法返回字符串的副本,忽略前导空格和尾部空格。语法如下:
str.trim()
例题10.6:
package tenbao;
public class Blak {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = " java class ";
System.out.println("字符串原来的长度:" + str.length());
//将 str 去掉前导和尾部的空格后的长度输出
System.out.println("字符串现在的长度:" + str.trim().length());
}
}
10.4.3 字符串替换
replace()方法可实现将指定的字符或字符串替换成新的字符或字符串。语法如下:
str.replace(CharSequence target,CharSequence replacment)
例题10.7:
package tenbao;
public class NewStr {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "address";
String newstr = str.replace("a","A");
System.out.println(newstr);
}
}
10.4.4 判断字符串的开始与结尾
1.startsWith() 方法
该方法用于判断当前字符串对象的前缀是否为参数指定的字符串。语法如下:
startsWith(String prefix)
2.endsWith() 方法
该方法用于判断当前字符串是否以给予的字符串结尾。语法如下:
str.endsWith(String suffix)
例题10.3:
package tenbao;
public class Test2 {
public static void main(String[] args) {
//判断字符串开头
String num1 = "22045612";
boolean b1 = num1.startsWith("22");
System.out.println(b1);
//判断字符串结尾
String num2 = "21304578";
boolean b2 = num2.endsWith("78");
System.out.println(b2);
}
}
10.4.5 判断字符串是否相等
1.equals
如果两个字符串具有相同的字符和长度,则使用equals()方法进行比较时,返回true。否则返回false。语法如下:
str.equals(String otherstr)
2.equalslgnoreCase(String otherstr)
使用equals()是区分大小写的,而使用equalslgnoreCase()忽略了这种情况返回类型为boolean类型。语法:
str.equalslgnoreCase(String otherstr)
例题10.9:
package tenbao;
public class Opinion {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1 = new String("abc");
String s2 = new String("ABC");
boolean b = s1.equals(s2);
boolean b2 = s1.equalsIgnoreCase(s2);
System.out.println(s1 + "equals" + s2 + ":" + b);
System.out.println(s1 + "equalsIgnoreCase" + s2 + ":" + b2);
}
}
10.4.6 按字典顺序比较两个字符串
比较 compareTo()方法为按字典顺序比较两个字符串,该比较基于 字符串中各个字符的Unicode 值,按字典顺序将 String对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此 String对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为 0。语语法如下:
str.compareTo(String otherstr)
例题10.10:
package tenbao;
public class Wordbook {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = new String("b");
String str2 = new String("a");
String str3 = new String("c");
System.out.println(str + " compareTo " + str2 + ":"
+ str.compareTo(str2));
System.out.println(str + " compareTo " + str2 + ":"
+ str.compareTo(str3));
}
}
10.4.7 字母大小写转换
1.toLowerCare()方法
该方法将字符串中的所有大写字母转化为小写。字符串长度不变。语法:
str.toLowerCase()
2.toUpperCase()方法
该方法将字符串中的所有小写转化为大写。
str.toUpperCase()
例题10.11:
package tenbao;
public class UpAndLower {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = new String("Oh My God");
String newstr = str.toLowerCase();
String newstr2 = str.toUpperCase();
System.out.println(newstr);
System.out.println(newstr2);
}
}
10.4.8 字符串分割
1.split(String sign)
该方法可根据给定的分割符对字符串进行拆分。语法如下:
str.split(String sign)
2.split(String sign,int limit)
该方法可根据给定的分割符对字符串进行拆分,并限定拆分次数。语法如下:
str.split(String sign,int limit)
例题10.12:
package tenbao;
public class Division {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "192.168.0.1";
String[] firstArray = str.split("\\.");
String[] secondArray = str.split("\\.",2);
System.out.println("str 的原值为:[" + str + "]");
System.out.println("全部分割的结果:");
for(String a:firstArray) {
System.out.print("[" + a +"]");
}
System.out.println();
System.out.println("分割两次的结果:");
for(String a:secondArray) {
System.out.println("[" + a + "]");
}
System.out.println();
}
}
10.5 格式化字符串
10.5.1 日期和时间字符串格式化
1.日期格式化
先来看一个例子。返回一个月中的天数,代码如下:
Date date = new Date();
String s = String.format("%te",date);
例题10.13:
package tenbao;
import java.util.Date;
public class Test3 {
public static void main(String[] args) {
//日期格式化
String year = String.format("%tY", date);
String month = String.format("%tm", date);
String day = String.format("%td", date);
System.out.println(year + "年" + month + "月" + day + "日");
}
}
2.时间格式化
例题10.14
package tenbao;
import java.util.Date;
public class Test3 {
public static void main(String[] args) {
//时间格式化
String hour = String.format("%tH", date);
String minute = String.format("%tM", date);
String second = String.format("%tS", date);
System.out.println(hour + "时" + minute + "分" + second + "秒");
}
}
3.格式化常见的日期时间组合
例题10.15
package tenbao;
import java.util.Date;
public class Test3 {
public static void main(String[] args) {
//常用的日期时间格式化
String dateFormat = String.format("%tF", date);
String timeFormat = String.format("%tT", date);
System.out.println(dateFormat + " " + timeFormat);
}
}
10.5.2 常规类型格式化
例题10.16:
package tenbao;
public class General {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = String.format("%d", 400/2);
String str2 = String.format("%b", 3>5);
String str3 = String.format("%x", 200);
System.out.println("400的一半是:" + str);
System.out.println("3>5正确吗:" + str2);
System.out.println("200的16进制是:" + str3);
}
}
10.6 使用正则表达式
例题10.17
package tenbao;
public class Judge {
public static void main(String[] args) {
// TODO Auto-generated method stub
String regex = "\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}";
String str1 = "aaa@";
String str2 = "aaaaa";
String str3 = "1111@111ffyu.dfg.com";
String str4 = "1111@111ffyu.dfg.dfg.dfg.dfg.dfg.com";
String str5 = "1111@111ffyu.com";
if(str1.matches(regex)) {
System.out.println(str1 + "是一个合法的E-mail地址格式");
}if(str2.matches(regex)) {
System.out.println(str2 + "是一个合法的E-mail地址格式");
}if(str3.matches(regex)) {
System.out.println(str3 + "是一个合法的E-mail地址格式");
}if(str4.matches(regex)) {
System.out.println(str4 + "是一个合法的E-mail地址格式");
}if(str5.matches(regex)) {
System.out.println(str5 + "是一个合法的E-mail地址格式");
}
}
}
10.7 字符串生成器
1.append()方法
该方法用于向字符串生成器中追加内容。通过该方法的多个重载形式,可实现接受任何类型的数据,如int、boolean、char、String、double或者另一个字符串生成器等。语法如下:
append(content)
其中,content 表示要追加到字符串生成器中的内容,可以是任何类型的数据或其他对象。
2.insert(int offset,arg)
向字符串生成器中指定的位置添加字符,代码如下:
StringBuilder bf = new StringBuilder("hello");
bf.insert(5,"world");
System.out.println(bf.toString());
3.delete(int start,int end)方法
删除指定位置的子字符串,代码如下:
StringBuilder bf = new StringBuider("StringBuider");
bf.delete(5,10);
System.out.println(bf.toString);
前删后不删