Java:null

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kafmws/article/details/81162864

null

前言:发现Java中的null还真有些需要注意的地方


  • null的定位

null既不是对象也不是一种类型,它仅是一种特殊的值,表示一种空白,一种缺失。你可以将其赋予任何引用类型,或者说将null转化成任何类型

String str = null; 
Integer itr = null;
Double dbl = null; 
 
String myStr = (String) null;
Integer myItr = (Integer) null; 
Double myDbl = (Double) null; 

当类中的对象变量/引用类型(包括数组对象)未被初始化时,自动用null填补空白
而类中的基本类型变量则赋为默认值如 int → 0 、 double → 0.0 、char → 、boolean → false

  • null不可以自动装箱或转换为默认值
    null可以赋值给引用变量,但不能将null赋给基本类型变量
统计各数字出现次数
Map<Integer,Integer> numberAndCount = new HashMap<>();
        int[] numbers = {3, 5, 7, 9, 11, 13, 17, 19, 2, 3, 5, 33, 12, 5};
        for (int i : numbers) {
            int count = numberAndCount.get(i);// NullPointerException here
            numberAndCount.put(i, count++); 
        }
  • null不是任何类的实例
    虽然null可以填补甚至"转换"为任意类型,但是null不是任何类的实例
Integer iAmNull = null;
if(iAmNull instanceof Object)
   System.out.println("true");                             
 else
   System.out.println("false");
输出false
  • 内容为null的对象变量可以调用该类的类方法
    这也是类静态方法与类的对象无关,也无法使用非静态内容的有力说明
public static void main(String args[]) throws InterruptedException {
        Study myObject = null;
        myObject.staticMethod();
        myObject.notStaticMethod();
    }
        private static void staticMethod(){
            System.out.println("I am static method, can be called by null reference");
        }

        private void notStaticMethod(){
            System.out.println("I am NON static method, don't date to call me by null");
        }
  • 可以将null传递给方法使用
    所以要考虑参数传为null时的安全问题

  • Java中 null == null 返回true


2018/11/19

猜你喜欢

转载自blog.csdn.net/kafmws/article/details/81162864