Java中null?

今天很好奇对null进行强转会不会拋错。做了如下测试得到的结果是如果把null强转给对象,是不会抛异常的本身对象是可以为null的。但是如果是基本类型比如 int i = (Integer)obj的强转,其實内部会调用intvalue方法去赋值给基本类型所以这时候是会报错的。

上面能正常执行即把null赋值给一个对象或者强行类型转换赋值给对象都是沒有问题的。如果s1是 int的基本类型呢
代码如下,编译时不会报错

我整天都是在跟Java打交道我在Java开發中最常用的一段代码就是用object != null在使用对象之前判断是否为空。这么做是为了避免NullPointerException但是我发现这样检测代码实在是太丑了,而且及其不可讀

那有没有一种优雅的替代方法呢?

再清晰化一下我的问题我是在强调在使用对象的属性或者方法之前,确保它不为空的重要性就潒下面这段代码一样:

原文发布于微信公众号 - java一日一条(mjx_java)

本文参与,欢迎正在阅读的你也加入一起分享。

但像所有事情一样:这取决于現在Java中null的GC非常好,一切都应该在不再可及时很快清理掉这是在为局部变量保留一个方法之后,并且当一个类实例不再被字段引用时

如果知道它将保持引用,则只需显式为null例如一个数组,它保持在周围当数组不再需要时,您可能需要清空数组中的各个元素

例如,来洎ArrayList的这段代码:

而且只要没有引用保留,显式地将对象置为null也不会导致对象被收集到任何时候

参考资料

 

随机推荐