您现在的位置是:首页 > 正文

equals()方法防止NullPointerException

2024-02-01 03:49:31阅读 2

equals()方法在String内容比较中被频繁使用,这里有一个小技巧能够有效防止NullPointerException,那就是比较一个引用变量和一个字符串常量的时候将字符串常量写在前面,如下面程序代码中before方法中的那样。

public class Main {
    private static String str = null;
    public static void main(String[] args) {
        before(str);
        after(str);
    }

    public static void before(String str) {
        if ("a".equals(str)) {
            System.out.println("a");
        } else {
            System.out.println("b");
        }
    }
    public static void after(String str) {
        if (str.equals("a")) {
            System.out.println("a");
        } else {
            System.out.println("b");
        }
    }
}

运行程序,after方法回发生NullPointerException而before方法不会。

是的,我们应该检查 str 不让它是null,但是,能多一层保险不是更好吗,反正将字符串常量写在前面也不会影响其他的什么。

网站文章

  • 进程通信之共享内存

    进程通信之共享内存

    共享内存

    2024-02-01 03:49:01
  • 多核与多处理器的区别

    多核与多处理器的区别

    多核:单块CPU上面能处理数据的芯片组的数量,比如,双核就是包括2个相对独立的CPU核心单元组,四核就包含4个相对独立的CPU核心单元组。多处理器:主板上实际插入的cpu数量,一般有两个或者多个处理器...

    2024-02-01 03:48:54
  • 计算机课辅导学困生的方法,后进生辅导计划

    计算机课辅导学困生的方法,后进生辅导计划

    后进生辅导计划后进生辅导计划(一):后进生转化工作是班级工作的重要环节,是班主任作好班级工作的关键。后进生是教师的重点辅导对象,辅导要做到及时、全面、持之以恒,后进生的构成过程决定转化工作务必持之以恒...

    2024-02-01 03:48:47
  • Java Concurrency Program

    Java Concurrency Program

    本篇博客对《Java并发编程实战》一书进行总结,较为系统地对JCP的主要内容进行介绍,主要包括:并发和多线程引入的问题与解决、线程池的使用和线程的协调,以便加深理解和记忆

    2024-02-01 03:48:40
  • ubuntu18.04安装nvidia显卡驱动

    ubuntu18.04安装nvidia显卡驱动

    之前查了很多安装资料,一共有三种安装方式。最初是关闭了ubuntu系统自带的驱动,禁用nouveau。也更换了中科大的镜像源,但在终端安装过程中还是显示有一些包下载超时。最后选择去官网手动下载安装驱动。

    2024-02-01 03:48:14
  • 中介者模式(Mediator)

    中介者模式(Mediator)

    中介者模式(Mediator)1.意图用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 在下列情况下使用中介者模式 : • 一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。 • 一个对象引用其他很多对象并且直接与这些对象通信 ,导致难以复用该对象。 • 想定制一个分布在多个类中的行为

    2024-02-01 03:48:08
  • newifi_dts

    /*包含头文件*/#include "mt7621.dtsi"//板子级别#include <dt-bindings/gpio/gpio.h>#include <dt-bindings/input/i...

    2024-02-01 03:48:00
  • 进程、线程及协程的区别

    进程、线程及协程的区别

    一、概念 **进程:**进程是一个具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统资源分配和独立运行的最小单位; **线程:**线程是进程的一个执行单元,是任务调度和系统执行的基本单位;...

    2024-02-01 03:47:33
  • opengles学习笔记

    GLSL语言里面的 attribute和uniform类型的变量,在程序中通过GLES20.glGetAttribLocation和GLES20.glGetUniformLocation获取, 这里获...

    2024-02-01 03:47:25
  • Android 当前时间差,返回几分钟前、几小时前、几个月前

    总DateUtil时间工具类地址: 需求: 以前的一个时间和当前时间多对比,返回几分钟前、几小时前、几个月前、几年前 代码: /** * 时间差 * * @param date * @return */ public static String getTimeFormatText(Date date) { long...

    2024-02-01 03:47:18