目录

1、数组为空和长度为0的区别

1.1、对于方法返回数组或集合的判断

1.2、对于空数组和null

1.3、返回值到底应该是用null还是空集合?

1、牛客网上

2、《阿里巴巴JAVA开发手册》书中表示

3、《Effective Java (Third Edition)》书中表示

总结:


1、数组为空和长度为0的区别

1.1、对于方法返回数组或集合的判断

可以直接判断  数组为空 || size> 0。

需要先判断是否为空,否则可能会出现空指针异常。
例如:

if(array == null || 0 == array.length) {
// 这种写法正确,因为执行到 “0 == array.length”则说明数组不为空,不会产生空指针异常。
if (0 == array.length || array == null) {
// 这种写法可能会产生空指针异常。
}

1.2、对于空数组和null

//只声明了一数组变量;        
int[] array1;                            
//声明一数组变量并赋值null,array1是一个数组类型的空引用,不指向任何对象;                  
int[] array1 = null;           
//声明并创建一数组对象,长度是0;一个长度为 0 的数组 / 空数组
int[] array2 = new int[0];  
//数组里可能只有一个空字符串 "",这时数组长度是 1。这种情况也要注意判断。
if ( arr.length == 1 && arr[ 0 ].equals( "" ) ) {
    System.out.println( "输入的数组不能只包含一个空字符串" );
    return;
}
  • 语句一变量还没初始化,打印 array会出错:“可能尚未初始化变量 n”;
  • 语句二虽已初始化,打印“array1.length”会出现异常:NullPointerException;
  • 语句三打印“array2.length”是0,数组内还没有元素。

返回null,则调用方法必须先判断是否返回null,才能对放回数组进一步处理,而如果返回空数组即长度为0的数组(new int[0]),则无须null引用检查 。鉴于此, 返回数组的方法在没有结果时 我们通常返回 空数组 ,而不是null ,这样做对于函数调用者的处理比较方便。

1.3、返回值到底应该是用null还是空集合?

1、牛客网上

做一个编程题时,在提交代码后老是抛出NullPointerException异常,大概的代码如下:

public ArrayList<Integer> foo(TreeNode root) {
    if (root == null){
        return null;
   return ...
}

后来改成如下代码就通过了

public ArrayList<Integer> foo(TreeNode root) {
    if (root == null){
        return new ArrayList<Integer>();
   return ...
}

原因应该是牛客网中的测试代码没有考虑null的情况,希望我们返回的是一个空ArrayList

2、《阿里巴巴JAVA开发手册》书中表示

可以返回null,因为防止NPE是调用者的责任。

java 判断String数组空 java如何判断数组是否为空_牛客网

3、《Effective Java (Third Edition)》书中表示

返回长度为零的数组或者集合,而不是null。

总结:

1、在返回值为 数组或者集合 时,尽量 返回长度为零的数组或者集合,而不是null ,这样在调用时就能简化代码,减少不必要的麻烦,并且不必担心NullPointerException异常(除非这对性能会造成很大的影响)。

2、如果返回值为空对象时没有意义的话,就可以考虑直接抛出异常。

Sparkconf Spark配置项类,SparkContext类接收配置项内容,控制驱动程序。 一旦Sparkconf对象被创建提交,它的内容不能被修改。Spark不支持动态配置SparkConf。 SparkConf定义了属性,setMaster是对spark.master的设置;setAppName是对属性spark.app.name的设置。 setMaster(String master

python没有定义怎么办 python中未定义怎么解决

NameError在python中,如果引用的变量未定义,则会报告NameError: name '变量名' is not defined。如下代码抛出了一个异常:!/usr/bin/env python -- coding:utf-8 -- print 'hello world' print 'hello %s' % name 报错信息如下: Traceback (most recent cal