理解null关键字及集合或字符串需先判断null再判断长度的原因

null关键字

Java中,null是一个关键字,代表不确定的对象。null只能用于赋给引用类型变量,不可以赋给基本数据类型变量。类成员引用变量默认为null。但对于非类成员变量,不能只声明定义,不进行初始化,但后边的代码中使用了它,这时候,就会进行报错。下边代码:
        Connection connection = null;
        try {
            connection = DriverManager.getConnection("url", "name", "passwod");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        String catalog = connection.getCatalog();
 这时候,如果不指定connection为null,就使用connection,就会报错。
 null本身虽然能代表一个不确定的对象,但就null本身来说,它不是对象,也不知道什么类型,也不是java.lang.Object的实例。

判断字符串/数组/集合 不为空的方法

 在代码中,我们经常这样来判断一个字符串是否为空。即:首先判断是否为null,再判断长度是否大于0.
    public static void test(String s) {
        if (s != null && s.length() > 0) {
            System.out.println(s.charAt(0));
            return;
        }
    }
为什么要这样进行判断呢。为什么不能直接写一个条件就判断。为什么必须得将s != null放在s.length() > 0前面进行判断呢。我们看下边的代码会出现什么错误:
    public static void test(String s) {
        if (s.length() > 0 && s != null) {
            System.out.println(s.charAt(0));
            return;
        }
    }

这时候在main方法中调用此方法:

    public static void main(String[] args) {
        String s = null;
        test(s);
    }

这样会出现:Exception in thread “main” java.lang.NullPointerException. 即空指针异常。这说明,必须得把s != null的判断条件放在前面,就是为了避免这种情况,当引用类型声明为null时,它不是一个对象类型,所以也就没有length方法了。
那么写两个条件判断也就好理解了:s != null是为了防止String类型声明为null;s.length() > 0的判断条件,为了防止:s=”“赋值空串。当字符串初始化为:s=”“时,其长度为0,但却在内存中开辟了空间。null不是对象,null不是对象,”“是对象,所以null没有分配空间,”“分配了空间是对象,所以null没有分配空间,”“分配了空间,但它是一个空串,所以要对空串这种情况进行判断。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值