敲代码的过程中,会遇到各种各样的吊问题,之前遇到过一个小问题,举个例子
public class _01 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String userName;
int passWord;
System.out.println("请输入账号名称");
userName=input.next();
System.out.println("请输入密码");
passWord=input.nextInt();
if (userName.equals("青")&&passWord==123){
System.out.println("欢迎你青");
}else {
System.out.println("对不起,你不是青");
}
System.out.println();
}
}
这是一个简单的判断账号密码的小程序,如果输入的userName为"青"并且输入的passWord为123则输出欢迎你青,否则则输入对不起你不是青。
在上面的例子中if()语句在判断uesrName的时候没有同判断passWord的语句相同,passWord直接判断输入的数值是否等于123,而userName的判断却调用了userName.equals“青”,这与String类型的存放方式有关。如果为String类型,“==”对比的则是存放地址是否相同,而equals()则是判断这个函数里的字符串是否相同,所以在这种对比的时候应当用equals()来做对比。下为图解。
代码1使用“==”判断:
public class _01 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String userName;
int passWord;
System.out.println("请输入账号");
userName=input.next();
System.out.println("请输入密码");
passWord=input.nextInt();
if (userName=="青"&&passWord==123){
System.out.println("欢迎你青");
}else {
System.out.println("对不起,你不是青");
}
System.out.println();
}
}
运行结果为:
代码2 使用equals()来做判断:
public class _01 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String userName;
int passWord;
System.out.println("请输入账号");
userName=input.next();
System.out.println("请输入密码");
passWord=input.nextInt();
if (userName.equals("青")&&passWord==123){
System.out.println("欢迎你青");
}else {
System.out.println("对不起,你不是青");
}
System.out.println();
}
}