Java中,null是一个关键字,用来标识一个不确定的对象。
null常见意义:
一、null是代表不确定的对象
  Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,

但不可以将null赋给基本类型变量。
比如:int a = null;是错误的。Ojbect o = null是正确的。
Java中,变量的适用都遵循一个原则,先定义,并且初始化后,才可以使用。我们不能int a后,

不给a指定值,就去打印a的值。这条对对于引用类型变量也是适用的。
有时候,我们定义一个引用类型变量,在刚开始的时候,无法给出一个确定的值,但是不指定值,

程序可能会在try语句块中初始化值。这时候,我们下面使用变量的时候就会报错。这时候,可以

先给变量指定一个null值,问题就解决了。

例如:

Connection conn = null;
try {
conn = DriverManager.getConnection("url", "user", "password");
} catch (SQLException e) {
e.printStackTrace();
} String catalog = conn.getCatalog();

如果刚开始的时候不指定conn = null,则最后一句就会报错。

二、null本身不是对象,也不是Objcet的实例

null本身虽然能代表一个不确定的对象,但就null本身来说,它不是对象,也不知道什么类型,

也不是java.lang.Object的实例。
可以做一个简单的例子:

//null是对象吗? 属于Object类型吗?
if (null instanceof java.lang.Object) {
System.out.println("null属于java.lang.Object类型");
} else {
System.out.println("null不属于java.lang.Object类型");
}

结果会输出:null不属于java.lang.Object类型

三、Java默认给变量赋值

在定义变量的时候,如果定义后没有给变量赋值,则Java在运行时会自动给变量赋值。赋值原则

是整数类型int、byte、short、long的自动赋值为0,带小数点的float、double自动赋值为0.0,

boolean的自动赋值为false,其他各供引用类型变量自动赋值为null。
  这个具体可以通过调试来看。

四、容器类型与null

List:允许重复元素,可以加入任意多个null。
  Set:不允许重复元素,最多可以加入一个null。
  Map:Map的key最多可以加入一个null,value字段没有限制。
  数组:基本类型数组,定义后,如果不给定初始值,则java运行时会自动给定值。引用类型数组,不给定初始值,则所有的元素值为 null。

五、null的其他作用

1、判断一个引用类型数据是否null。 用==来判断。
  2、释放内存,让一个非null的引用类型变量指向null。这样这个对象就不再被任何对象应用了。等待JVM垃圾回收机制去回收。

java中null 关键字的更多相关文章

  1. Java中的关键字 transient

    先解释下Java中的对象序列化 在讨论transient之前,有必要先搞清楚Java中序列化的含义: Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息 ...

  2. 关于Java中null的十点详解

    对于每一个Java程序员来说,null肯定是一个让人头痛的东西,连Java的发明者都承认这是一项巨大的设计失误,今天就来总结一下Java中关于null的知识. 1.null不属于任何类型,可以被转换成 ...

  3. 【转】Java中的关键字 transient

    阅读目录 先解释下Java中的对象序列化 关于transient关键字 举个例子 参考资料 先解释下Java中的对象序列化 在讨论transient之前,有必要先搞清楚Java中序列化的含义: Jav ...

  4. Java 中的关键字

    Java 中有多少个关键字,有大小写之分吗? Java 中有 48 个关键字在使用 + 两个保留关键字未使用,共 50 个关键字. Java 关键字全部都由是小写组成. Java 中保留关键字分别是哪 ...

  5. Java中的关键字有哪些?「Java中53个关键字的意义及使用方法」

    Java中的关键字有哪些? 1)48个关键字:abstract.assert.boolean.break.byte.case.catch.char.class.continue.default.do. ...

  6. 【转】java中volatile关键字的含义

    java中volatile关键字的含义   在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言 ...

  7. Java中native关键字

    Java中native关键字 标签: Java 2016-08-17 11:44 54551人阅读 评论(0) 顶(23453) 收藏(33546)   今日在hibernate源代码中遇到了nati ...

  8. Java复习笔记--java中this 关键字

    Java中this关键字,this可以调用类的成员变量和成员方法,this还可以调用类中的构造方法.使用这种方式值得注意的是, 只可以在无参构造方法中的第一句使用this关键字调用有参构造方法. pu ...

  9. Java中this关键字的使用

    本文介绍了在Java中this关键字的作用于使用方法 当局部变量和成员变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量.(this指的是当前对象自己) 如:public class ...

随机推荐

  1. php 封装

    把数据库做成一个类,先建一个php文件,保存.最好和平时写的那些在同一路径下. 便于以后换电脑,只需在封装里面改一下四个参数就可以了 <?php class fengzhuang //类名 { ...

  2. ASP.NET 访问共享文件夹

    配置代码: var dataProtection = new Microsoft.AspNet.DataProtection.DataProtectionProvider(new DirectoryI ...

  3. 安装MYSQL详细教程 版本:mysql-installer-community-5.7.16.0 免安装版本和安装版本出现错误的解决

    一.版本的选择 之前安装的Mysql,现在才来总结,好像有点晚,后台换系统了,现在从新装上Mysql,感觉好多坑,我是来踩坑,大家看到坑就别跳了,这样可以省点安装时间,这个折腾了两天,安装了好多个版本 ...

  4. 用VS Code写Python程序

    安装python 常见的Linux发行版本中已经安装了python,而且可能不止一个版本,以Ubuntu14.04为例,预装的python有2个版本,分别是2.7.6和3.4.3,python2和py ...

  5. .Net语言 APP开发平台——Smobiler学习日志:如何实现快速跳转网页

    Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 样式一 一.跳转网页代码(Button的Click事件) Private Sub Button1_ ...

  6. C#——字段和属性

    //我的C#是跟着猛哥(刘铁猛)(算是我的正式老师)<C#语言入门详解>学习的,微信上猛哥也给我讲解了一些不懂得地方,对于我来说简直是一笔巨额财富,难得良师! 在刚开始学习属性这一节时,开 ...

  7. 2017Windows下安装pip

    -------------------------------------------- 下载地址:  https://pypi.python.org/pypi/pip#downloads 下载颜色那 ...

  8. php的面向对象

    今天PO一段php的面向对象相关知识吧.面向对象的相关概念和理论知识是很抽象的,要结合现实中的事物来理解,这样有助于类比记忆.还有就是要多接触吧,量变引质变这个应该还是一个硬道理吧,有时候量够了的话, ...

  9. Maven实战系列文章

    1.Maven命令行使用:mvn clean compile(编译) 2.Maven命令行使用:mvn clean package(打包) 3.Maven命令行使用:mvn clean install ...

  10. 高性能 TCP & UDP 通信框架 HP-Socket v3.5.2

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...