首页 热点资讯 义务教育 高等教育 出国留学 考研考公

java中instanceof的用法

发布网友 发布时间:2022-04-26 15:09

我来回答

6个回答

热心网友 时间:2022-04-25 18:40

类型不兼容的情况下不能直接使用instanceof来进行判断,如果这两个类型是基本数据类型可以使用a.getClass().equals(B.class)(其中a是基本数据类型A的一个变量,相当于你这里的s,B是你想要比较的那个数据类型,这里相当于Boolean);如果这两个类型是你自己创建的普通类,则可以让他俩继承一个共同的类,或者实现同一个接口。你这个属于第一种情况,程序如下:

public class JudgeType{
    public static void main(String[] args){
        String s="true";
        Boolean b=true;
        
        System.out.println(s.getClass().equals(Boolean.class));//输出为false
    }
}

再举一个第二种的情况,程序如下:

public class Test{
    public static void main(String[] args){
Person p=new Teacher(); //使用多态

boolean b=p instanceof Student;
System.out.println(b);//输出为false
    }
}

class Person{   

}

class Student extends Person{

}

class Teacher extends Person{

}

热心网友 时间:2022-04-25 19:58

java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。该语言规定了s必须是右边Class类的继承数中的一个,否则编译出错。你可以这样改:System.out.println(Boolean.valueOf(s) instanceof Boolean);,但是这个结果是true。追问我需要它结果为false

热心网友 时间:2022-04-25 21:33

Boolean 是你自己创建的类吗。instanceof 后面必须是个类 不能是数据类型追问你先学懂了Java基础再回答问题吧
public class JudgeType
{
public static void main(String[] args)
{
String s = "true";
Boolean b = true;
System.out.println(b instanceof Boolean);
}
}
拿回去试试

热心网友 时间:2022-04-25 23:24

String s = "true";
Boolean b = true;
Boolean re = (s.getClass().getName() == b.getClass().getName())?true:false;
System.out.println(re);

热心网友 时间:2022-04-26 01:32

这样编译不通过呀,因为s是String类型,java的数据类型是强类型,所以编译不通过。你要表达什么意思?追问我要让程序提示出false也就是让我知道String的对象不属于Boolean类 或者你写一段结果为false的代码 让我看看 能不能看懂

追答System.out.println(s.getClass().isAssignableFrom(b.getClass()));

热心网友 时间:2022-04-26 03:57

仍然萨芬撒追问?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com