1.null的使用

  Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。比如我们在定义一个变量的时候我们通过会这样做:XXXX xxxx = null;在需要赋值的时候xxx = new XXXX();我们知道我们在定义变量的时候,java会给其赋一个初始化的值,一般的基本类型中整数类型int、byte、short、long的自动赋值为0,带小数点的float、double自动赋值为0.0,boolean的自动赋值为false,而引用类型变量自动赋值为null。需要注意的是不能将 null 赋给原始类型(byte、short、int、long、char、float、double、boolean)变量。

2.null与Object关系

先看段代码以及运行结果

package com.test;

public class NullTest {

	/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
if (null instanceof Object) {
System.out.println("null是Object类型");
} else {
System.out.println("null不是Object类型");
}
} }

  毫无疑问结果是:null不是Object类型

3.访问static成员变量和方法

首先看下代码,可以猜测下具体的执行结果,

package com.test;

public class NullTest {

	public static String str = "nullString测试";

	/**
* @param args
*/
public static void main(String[] args) {
System.out.println("************ ");
System.out.println(((NullTest)null).str+" 来自于静态变量");
System.out.println("************ ");
((NullTest)null).printStr();
System.out.println("************ ");
} public static void printStr(){
System.out.println(str+" 来自于静态函数");
} }

  执行结果是:

************
nullString测试 来自于静态变量
************
nullString测试 来自于静态函数
************

  没有错误,这段代码可以正确的运行并且获取我们期望的结果;简单解析下:因为null值可以强制转换为任何java类类型,(String)null也是合法的。但null强制转换后是无效对象,其返回值还是为null,而static方法的调用是和类名绑定的,不借助对象进行访问所以能正确输出。反过来,没有static修饰就只能用对象进行访问,使用null调用对象肯定会报空指针错了。

4.null的其他作用

  如果我们想快速的释放对象所占的内存资源而不是期望GC和在合适的时候才扫描清除掉,我们就可以使用null。让一个非null的引用类型变量指向null。这样这个对象就不再被任何对象应用了,等待JVM垃圾回收机制去回收。也就是说将 null 赋给非原始变量相当于释放该变量先前所引用的对象。

Java 之关键字 null 使用总结的更多相关文章

  1. 深入Java关键字null

    一.null是代表不确定的对象   Java中,null是一个关键字,用来标识一个不确定的对象.因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量.   比如:int a = nu ...

  2. Java中有关Null的9件事

    对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常 (NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我 ...

  3. 转!!Java中关于Null的9个解释(Java Null详解)

    对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我认 ...

  4. 关于Java中的Null

    什么是Java中的Null? null在Java中是一个非常重要的概念,它最初是为了表示缺少某些东西,例如缺少用户.资源或任何东西而发明出来的.但是这也为Java程序员带来了很多麻烦,比如最常见的空指 ...

  5. Java中的Null是什么?

    对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我认 ...

  6. Java中有关Null的9件事(转)

    对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我认 ...

  7. [Java并发编程(三)] Java volatile 关键字介绍

    [Java并发编程(三)] Java volatile 关键字介绍 摘要 Java volatile 关键字是用来标记 Java 变量,并表示变量 "存储于主内存中" .更准确的说 ...

  8. (后台)详细了解java中的null(转)

    转自CSDN: 相信大家对于NullPointException 这个让人又爱又恨的不陌生吧..对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰 .今天我们就来谈 ...

  9. java的关键字与保留字

    1,Java 关键字列表 (依字母排序 共50组): abstract, assert, boolean, break, byte, case, catch, char, class, const(保 ...

随机推荐

  1. Codeforces Round #256 (Div. 2)——Multiplication Table

    题目链接 题意: n*m的一个乘法表,从小到大排序后,输出第k个数  (1 ≤ n, m ≤ 5·105; 1 ≤ k ≤ n·m) 分析: 对于k之前的数,排名小于k:k之后的数大于,那么就能够採用 ...

  2. ipset高大上性能果断将nf-HiPac逼下课

    netfilter.sourceforge,github上有一个凄凉的项目,那就是nf-hipac.这个以前给Linux firewall设计带来希望的项目早在2005年就停止了更新和维护,而我本人则 ...

  3. 新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t

    新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...

  4. HDU1061-Rightmost Digit(高速功率模)

    pid=1061">主题链接 题意:求n^n的个位数的值. 思路:高速幂求值 代码: #include <iostream> #include <cstdio> ...

  5. ASP.Net中使用XMLDataSource

    在Web开发中,程序和数据库打交道是常有的事情.在平时使用过程中,使用较多的是MS SQLSERVER,因此经常用到SQLDataSource将数据绑定的数据控件上.有时数据量较小,无需要在数据库中创 ...

  6. 五通信算法:五种编码增益比较matlab模拟

    1. 卷积编码增益性能.BER 信道环境:AWGN 信噪比SNR :0:0.1:6 MATALB仿真架构:源比特 +卷积码 +BPSK +AWGN +Viterbi +BER 说明:卷积编码,不同的R ...

  7. RTP 记录 log 该机制

    我们 RCV 在这里,经常跑concurrent request RTP: Receiving Transaction Processor, 它主要是用来处理 RCV_TRANSACTIONS_INT ...

  8. POJ3690 Constellations 【KMP】

    Constellations Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 5044   Accepted: 983 Des ...

  9. STL该反应堆运行

    首先来看全然二叉树的定义: 若设二叉树的深度为h,除第 h 层外,其他各层 (1-h-1) 的结点数都达到最大个数,第 h 层全部的结点都连续集中在最左边,这就是全然二叉树.而将一维数组视为全然二叉树 ...

  10. XP 多国语言包

    http://download.microsoft.com/download/f/6/4/f648c363-6975-470c-8202-ac5aea706109/WindowsXP-KB835935 ...