博客
关于我
关于java 中 的 null。
阅读量:755 次
发布时间:2019-03-23

本文共 1505 字,大约阅读时间需要 5 分钟。

null在Java编程中一直是一个容易引发争议的话题。很多开发者一看到null就立刻认为这段代码有问题,但实际上,null并不是问题,它只是一个值得尊重的存在。下面,我们将深入探讨null的三大特性,以及它在Java开发中的实际应用场景。


Null不是对象,这很简单

Java中,null不是一个对象,因为它不继承自java.lang.Object。以下代码会让许多人感到困惑:

String str = null;obj = new String();if (str instanceof Object) {    // 该代码不会运行,因为null instanceof java.lang.Object返回false}

null的特殊性不仅体现在类型检查上,还表现在内存管理中。有时候,使用null反而比使用具体的Object类型更灵活。例如:

public class MyClass {    public void start() {        // 这是一个空对象引用        MyClass instance = null;        instance_utc = new MyClass();        // 如果不是特殊情况,以上行为可能导致内存泄漏    }}

虽然看起来有点混乱,但null在某些情况下确实是一个有用的概念。


Null在内存管理中的作用

内存泄漏是开发者每天都要面对的重要问题。而null恰好可以帮助开发者更好地管理内存。例如:

Map
Gesture = new HashMap<>();// 手语识别过程中,可能会产生大量临时对象while (someCondition) { // 使用null表示没有可用的手势数据 Gesture = null; // 轻松地释放内存}

在某些情况下,使用null可以帮助减少内存开销,从而提高程序性能。例如,在物联网设备上,避免使用过多对象可能会节省宝贵的资源。


Null可以作为Map的key来使用

这个特点可能让很多人感到难以理解,但实际上这是一个有用的设计。例如:

Map
data = new HashMap<>();// 添加一个特殊的null键data.put((String) null, "defaultaction");//当map不为空,但key是null时:data.get((String) null) // 返回"defaultaction"

这种设计在某些领域非常有用。例如,在缓存机制中,使用null作为默认值的标识符,可以让程序更容易处理cache-hit和cache-miss。


Null的具体场景和注意事项

尽管null有一些独特的表现力,但需要谨慎使用它。在以下场景中,null非常有用:

  • 避免空对象引用

    当程序不需要任何后续操作时,使用null代替创建对象是更高效的方式。

  • 表示缺失或不确定性

    null可以表示某个值尚未获取或不存在。例如,微信用户的头像URL可能在未加载时为null。

  • 违反单tons设计模式

    如果单tons对象被赋予了null,可能导致逻辑问题。因此,需要谨慎处理。

  • 垃圾回收优化

    在某些情况下,置null可以提前返回内存资源,从而减少垃圾回收的负担。


  • 作为一个编程概念,null在Java中确实有其独特的价值。虽然它的存在可能会让一些开发者感到困惑,但实践中它的应用场景依然多种多样。如果你对null还有更多疑问,可以通过阅读《Effective Java》或相关高级编程书籍来深入了解。

    转载地址:http://jowzk.baihongyu.com/

    你可能感兴趣的文章
    MySQL 调优/优化的 101 个建议!
    查看>>
    mysql 转义字符用法_MySql 转义字符的使用说明
    查看>>
    mysql 输入密码秒退
    查看>>
    mysql 递归查找父节点_MySQL递归查询树状表的子节点、父节点具体实现
    查看>>
    mysql 通过查看mysql 配置参数、状态来优化你的mysql
    查看>>
    mysql 里对root及普通用户赋权及更改密码的一些命令
    查看>>
    Mysql 重置自增列的开始序号
    查看>>
    mysql 锁机制 mvcc_Mysql性能优化-事务、锁和MVCC
    查看>>
    MySQL 错误
    查看>>
    mysql 随机数 rand使用
    查看>>
    MySQL 面试题汇总
    查看>>
    MySQL 面试,必须掌握的 8 大核心点
    查看>>
    MySQL 高可用性之keepalived+mysql双主
    查看>>
    MySQL 高性能优化规范建议
    查看>>
    mysql 默认事务隔离级别下锁分析
    查看>>
    Mysql--逻辑架构
    查看>>
    MySql-2019-4-21-复习
    查看>>
    mysql-5.6.17-win32免安装版配置
    查看>>
    mysql-5.7.18安装
    查看>>
    MySQL-Buffer的应用
    查看>>