目录
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是调用者的责任。
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