java在调用 instanceof 前需要进行null检查吗

Java 必知必会 第 50 篇

is null check needed before calling instanceof

在调用 instanceof 前需要进行null检查吗

问题:

null instanceof SomeClass 会返回 null 还是抛出 NullPointerException 异常

答案一

在调用 instanceof 前不要进行null检查
null instanceof SomeClass 会返回 null
在 Java Language Specification 中 http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.20.2

在运行时,如果该instanceof运算符的关系表达式(RelationExpression)不为 null,且这个引用可以被成功转型( §15.16),不抛出ClassCastException,则结果为true;
 否则结果为false。

答案二

public class IsInstanceOfTest {

    public static void main(final String[] args) {

        String s;

        s = "";

        System.out.println((s instanceof String));
        System.out.println(String.class.isInstance(s));

        s = null;

        System.out.println((s instanceof String));
        System.out.println(String.class.isInstance(s));
    }
}

打印出

true
true
false
false
全部评论

相关推荐

2025-12-12 15:19
首先说明一下我眼中互联网大厂的定义:扎根互联网+对互联网影响重大T0:BAT(无先后)字节:如今 TT 已经成为全球最火的软件,直播电商创造的价值无法估计。对于 AI 技术,字节更是成立了 seed 部门,应用上有豆包,学术上有论文。阿里:业务就不多介绍,AI技术上和字节类似,通义实验室的 AI 也在国际上有一席之地。腾讯:更不用介绍,有鹅选鹅似乎永远不会过时。T1:蚂蚁蚂蚁:实际上,蚂蚁的认可度可以达到 T0(当阿里用一点问题没有),熟悉商业史的同学都知道,蚂蚁没改名前叫做"浙江阿里巴巴",除了这层关系,蚂蚁本身的业务、技术都配得上T0 的宝座,把它排在 T1 主要还是 bat 的业务太广泛(且名义上不属于阿里巴巴)。T1.5:美团美团:个人感觉实力能够排在蚂蚁之后,但是认可度似乎还没那么高。即时零售已经成为电商领域的必争之地,美团作为霸主有非常多的优势。同时技术上,也是公认的很好,AI 目前没有特别多的成果。T2:京东、pdd、滴滴、shopee、百度、shein、快手、TME、小红书等等,能够排在 T2 的定义:三个 T2 可以合成一个 T0,这个层次的大厂认可度其实没有太大区别了,社招简历都能过筛。(TME 的认可度也可以当腾讯用,但是 TME 本身实力不像蚂蚁,所以只能在 T2)对于美团:我认为美团比 T2 其他大厂强很多,但是又比 T1、T0 的大厂逊色不少,就单独为 T1.5 了。中厂定义:不属于 T2 的互联网大公司,例如 soul、陌陌、知乎、科大讯飞这种,他们有知名度,但是认可度差了 T2 一个档次,也没办法“三合一成为T0”
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务