判断字符串是否相等
对字符串对象进行比较不能简单地比较运算符“====”,因为比较运算符比较的是两个字符串的地址是否相同。即使两个字符串的内容相同。
即使两个字符串的内容相同,两个对象的内存地址也是不同的,使用比较运算符仍然会返回false。
equals()方法和equalsIgnoreCase方法
如果两个字符串具有相同的字符和长度,则使用equals方法()进行比较时,返回ture
使用equals()方法对字符串进行比较时是区分大小写的,而使用equalsIgnoreCase()方法是忽略了大小写的情况下比较两个字符串是否相等,返回结果仍未boolean类型。
我们用一组代码来进行比较
public class Opinion {
public static void main(String[] args) {
String s1=new String("abc");
String s2=new String("ABC");
boolean b=s1.equals(s2);//定义b为布尔类型s1和s2是否相同
boolean b2=s1.equalsIgnoreCase(s2);//定义b2为布尔类型s1和s2是否相等
System.out.println(s1+" "+"equals"+" "+s2+" "+b);//打印
System.out.println(s1+ " "+"equalslgnoreCase"+" " +s2+":"+b2);
}
String s1=new String("abc");
String s2=new String("ABC");
boolean b=s1.equals(s2);//定义b为布尔类型s1和s2是否相同
boolean b2=s1.equalsIgnoreCase(s2);//定义b2为布尔类型s1和s2是否相等
System.out.println(s1+" "+"equals"+" "+s2+" "+b);//打印
System.out.println(s1+ " "+"equalslgnoreCase"+" " +s2+":"+b2);
}
}
执行结果:
abc equals ABC false
abc equalslgnoreCase ABC:true
abc equalslgnoreCase ABC:true
按字典顺序比较两个字符串
CompareTo()方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的unicode值,按字典顺序将此String对象表示的字符序列与参数字符串所表示的字符串序列进行比较如果按字典顺序Sting对象表示的字符串序列进行比较。如果按字典顺序此String对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此String 对象位于参数数字字符串之后,则比价结果为一个正整数了;如果这两个字符串相等则结果为0
使用equals()方法比较,进行输出
public class Wordbook {
public static void main(String[] args) {
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"+str3+"."+str.compareTo(str3));
}
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"+str3+"."+str.compareTo(str3));
}
}
执行结果为:
bcompareTOa.1
bcompareToc.-1
bcompareToc.-1
字母大小写转换:字符串的tolowerCase()方法课将字符串中的所有字符从大写字母改为小写字母,而toUpperCase()方法可将字符串中的小写字母改为大写字母。
toLowerCase()是转换成小写,toUpperCase()是转换成大写
public class UpAndLower {
public static void main(String[] args) {
String str=new String("abcDEF");//str定义新的字符串类型
String newstr=str.toLowerCase();//将str中的abcdef转换为小写
String newstr2=str.toUpperCase();//将str中的abcde转换为大写
System.out.println(newstr);//打印newstr
System.out.println(newstr2);//打印newstr2
}
String str=new String("abcDEF");//str定义新的字符串类型
String newstr=str.toLowerCase();//将str中的abcdef转换为小写
String newstr2=str.toUpperCase();//将str中的abcde转换为大写
System.out.println(newstr);//打印newstr
System.out.println(newstr2);//打印newstr2
}
}
执行结果为:
abcdef
ABCDEF
ABCDEF
字符串分割:使用split()方法可以是字符串按指定的分割字符或字符串对内容进行分割,并将分割后的结果存放在字符串数组中。
public class Division {
public static void main(String[] args) {
String str="192.168.1.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.print("["+a+"]");
}
System.out.println();
}
}
String str="192.168.1.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.print("["+a+"]");
}
System.out.println();
}
}
执行结果为:
str的原值为:[192.168.1.1]
全部分割结果为:
[192][168][1][1]
分割两次结果为
[192][168.1.1]
全部分割结果为:
[192][168][1][1]
分割两次结果为
[192][168.1.1]
格式化字符串
String类静态forma格式化的字符串方法用于创建格式化的字符串
format()方法有两种重载形式
public class All_所有时间 {
public static void main(String[] args) {
Date date=new Date();
String year=String.format("%tY", date);
String month=String.format("%tm",date);
String day=String.format("%td", date);
String a=String.format("%ta", date);
String hour=String.format("%tH", date);
String minute=String.format("%tM", date);
String second=String.format("%tS", date);
System.out.println(year+"/"+month+"/"+day+" "+a+" "+hour+":"+minute+":"+second);
}
}
public static void main(String[] args) {
Date date=new Date();
String year=String.format("%tY", date);
String month=String.format("%tm",date);
String day=String.format("%td", date);
String a=String.format("%ta", date);
String hour=String.format("%tH", date);
String minute=String.format("%tM", date);
String second=String.format("%tS", date);
System.out.println(year+"/"+month+"/"+day+" "+a+" "+hour+":"+minute+":"+second);
}
}
执行结果为:2018/07/05 星期四 15:00:17
使用正则表达式:
正则表达式用于判断语句居多,用来检查某一字符串时候满足某一格式
用判断E-mai地址合法的是那几个
public class Judge {
public static void main(String[] args) {
//定义要匹配的E-mail地址的正则表达式
String regex="\w+@\w+(\.\w{2,3})*\.\w{2,3}";//符合这个正则表达式的为E-mail地址
String str1="aaa@";
String str2="asd@qq.com";
String str3="1111@qqffyu.dfg.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地址格式");
}
}
}
执行结果为:asd@qq.com是一个合法的E-mail地址格式//定义要匹配的E-mail地址的正则表达式
String regex="\w+@\w+(\.\w{2,3})*\.\w{2,3}";//符合这个正则表达式的为E-mail地址
String str1="aaa@";
String str2="asd@qq.com";
String str3="1111@qqffyu.dfg.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地址格式");
}
}
}
1111@qqffyu.dfg.com是一个合法的E-mail地址格式
字符串生成器:
创建成功的字符串,长度为固定的,内容不能被改变和编译。
下面就来验证一下字符串的长度和其字符串的工作效率
public class Jreque {
public static void main(String[] args) {
String str="";
//定义对字符串执行操作的起始时间
long startTime=System.currentTimeMillis();
for(int i=0;i<10000;i++){
str=str+i;
}
long endTime=System.currentTimeMillis();
long time=endTime-startTime;
System.out.println("String消耗时间"+time);
StringBuilder builder=new StringBuilder("");
startTime=System.currentTimeMillis();
for(int j=0; j<10000;j++){
builder.append(j);
}
endTime=System.currentTimeMillis();
time=endTime-startTime;
System.out.println("StringBuilder 消耗时间:"+time);
}
String str="";
//定义对字符串执行操作的起始时间
long startTime=System.currentTimeMillis();
for(int i=0;i<10000;i++){
str=str+i;
}
long endTime=System.currentTimeMillis();
long time=endTime-startTime;
System.out.println("String消耗时间"+time);
StringBuilder builder=new StringBuilder("");
startTime=System.currentTimeMillis();
for(int j=0; j<10000;j++){
builder.append(j);
}
endTime=System.currentTimeMillis();
time=endTime-startTime;
System.out.println("StringBuilder 消耗时间:"+time);
}
}
执行结果为:
String消耗时间273
StringBuilder 消耗时间:1
StringBuilder 消耗时间:1