zoukankan      html  css  js  c++  java
  • Java 之关键字 null 使用总结

    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 赋给非原始变量相当于释放该变量先前所引用的对象。

  • 相关阅读:
    虚拟机中按键切回windows系统界面快捷键
    余数
    质数(素数)判断代码实现
    =excel========》函数使用
    python 正则表达式规则
    linux常用命令详解
    c指针
    visual studio 2015 开发时常见问题的解决方案
    python装饰器
    构造方法
  • 原文地址:https://www.cnblogs.com/zhangminghui/p/4491766.html
Copyright © 2011-2022 走看看