String类常用API-字符串内容比较
字符串内容比较不适合用“==”
“==”比较的是地址,由“ ”创建的对象指向的地址是常量池,而String name = sc.next();接收到用户输入的字符串,地址存放再堆内存中,所以两个对象的地址不同,最终结果是false
import java.util.Scanner;
public class Stringtest {
public static void main(String[] args) {
String okname = "sujing";
String okpassword = "123";
Scanner sc = new Scanner(System.in);
System.out.println("请输入名称");
String name = sc.next();
System.out.println("请输入密码");
String password = sc.next();
if (okname == name && okpassword == password) {
System.out.println("success");
} else {
System.out.println("fail");//这里得到的结果是fail
}
}
}
推荐使用equals:只关心内容是否一样,不关心地址
//改用equals,得到的结果是success
if (okname.equals(name) && okpassword.equals(password) ) {
System.out.println("success");
} else {
System.out.println("fail");
}
equalsIgnoreCase:不区分大小写比较
/* equals是精确比较 equalsIgnoreCase是不区分大小写比较 常被用在验证码 */ String syscode="12Ab"; String code1="12aB"; System.out.println(syscode.equalsIgnoreCase(code1));//true
substring:截取内容,包前不包后
//substring:截取内容 包前不包后
String name1="我是李泓良!";
//只截取到3的前一位
System.out.println(name1.substring(0, 3));//我是李