错误总结之数组处理问题

当数组作为参数时或者调用一个方法返回数组时,对这个数组进行操作之前,需要对其进行非空判断,即判断该数组是否为null,然后再对其进行操作

例:

假设返回的数组为String[] ids

if(ids != null){

对数组进行操作

}

另外,数组长度为0和数组为Null是两个概念

例:

String[] ids = new String[0];或者String[] ids = {};

String[] userIds = null;

这两种的区别在于

1.ids是一个长度为0的数组,我们称之为“空数组”,空数组也是一个对象,只是它的长度为0

2.userIds是一个数组类型的“空”,只是一个引用

加入一个方法返回数组或者参数为数组,我们需要先去判断它是否为null,才能对数组进一步处理

否则当数组为null,我们去调用一个null的方法或属性时,会出现空指针异常!

其实不仅仅是数组,我们接收或返回的每一个参数在对它进行操作之前都需要进行非空判断,一般来说,如果我们打算对数据库进行优化,

将列设置为not null default,这时如果我们将一个null值存到数据库中,会出现异常并提示  column 'xxx' cannot be null

看网上有很多人说,数据库设计的时候就尽量把所有列都设置为not null,因为null值是没有实际意义的,这样说也不是没有道理,但主要还是因为索引列不能为null的原因

并且null值与空值(比如空字符串),两者相比,谁占用的空间比较大?首先,这个问题本身就没有意义,比如说,该列为varchar(64)类型,如果为Null,它就不占用任何的

空间,空字符串也一样。如果为char(64)类型,那么无论是Null还是空字符串,都会占用64个字符的空间。所以占用空间的大小并不取决于它是null还是空,而是由数据类型

来决定的!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值