为什么我输入shi,输出的却是3?其中存在什么问题
package java语言基础; //匹配有误;
import java.util.Scanner;
public class 待定2 {
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
String b=sc.next();
if(b=="shi")
System.out.println("1");
else if(b =="fou")
System.out.println("2");
else
System.out.println("3");
}
}
输入shi或fou,输出3
如果直接将b赋值为shi的话可以通过匹配,然后输出1,通过输入的方式就行不通
各位兄弟有谁能我给我解释一下这个问题,以及我该怎么改进;
原因:
String是引用数据类型,用==判断的时候,会比较对应的值和地址是否相等,用equals()函数判断的时候,只会比较值是否相等,所以引用类型之间比较值是否相等,要用equals()函数。
八大基本数据类型(byte,char,boolean,short,int,float,double,long)比较值的时候才能用==判断。
代码修改如下:
import java.util.Scanner;
public class 待定2 {
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
String b=sc.next();
if(b.equals("shi"))
System.out.println("1");
else if(b.equals("fou"))
System.out.println("2");
else
System.out.println("3");
}
}
像==、!=这些比较运算符可以说是给基本类型使用的,像String这种非基本类型的不能直接用这个比较
String类型如果要判断两个字符串是否相等或不等要用equals()
你题目的解答代码如下:
import java.util.Scanner;
public class 待定2 {
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
String b=sc.next();
if(b.equals("shi"))
System.out.println("1");
else if(b.equals("fou"))
System.out.println("2");
else
System.out.println("3");
}
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
== : 就相当于 你有10块钱,我也有10块钱,但是我这10块钱不是你的那个10块钱,是不相等的,这是判断两个东西是不是同一个东西;
equals(): 相当于你有10块钱,我也有10块钱,我们都是10块钱,是相等的,这判断是是两个东西的某些属性是否相等(具体判断什么要看怎么重写的equals)