Java中的null关键字杂谈

本文深入解析Java中null的概念,包括其含义、初始化规则、与对象的关系及异常处理。探讨null在变量、方法调用及集合中的行为,并提供代码示例说明如何避免空指针异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

null含义

在java中,null值表示引用不指向任何对象。在运行过程中系统发现使用了这样的引用时可以立即终止进一步的访问。

  1. 如果是对象的field的话系统在初始化对象的时候会将那些对象的值赋为null。
  2. 方法内变量,程序员需要自己给变量初始化为null
    【对于field字段的链接在学完反射后在此处添加】
 1 classT{
 2 Object obj = null;
 3 Object obj1;//系统在初始化的时候自动给它赋null
 4}
 5 class T{
 6 public void x(){
 7 Object obj = null;//这个需要程序员自己来完成
 8     }
 9}

(也就是所谓的类中变量不用初始化,方法中局部变量必须初始化
@@@@@对空对象不能调用非静态方法属性的描述

空对象也是对象,同样通过对象名引用方法或者属性,但是和一般的
对象有点不同。
一般的java对象分为属性,方法和储存空间,若一个对象的属性和方法
为空则可以看做是一个空对象。
@@!空对象调用非静态方法会出现空指针异常:
Exception in thread “main ” java.lang.NullPointetException
这是因为一个null对象中自身储存空间内饰没有任何方法和属性的,所
以任何空对象.xxx调用非静态方法或属性都会出现空指针异常

但空指针可以调用静态方法和属性,具体代码在下:

 public class 空指针{
 	static int id = 0;
 	
 	public static void main(String[]args){
	//(空指针)null将无类型的对象null强制转换成为空指针类的对象
	System.out.prinltn("获取静态属性id的值"+(空指针)null).id);
	//空对象调用静态属性
	((空指针)null).test();//空对象调用静态方法

}

以上代码去掉static关键字后,程序不会报错(说明实例化null转为空指针对象没有问题),但运行时会报出空指针异常(说明实例化后的空间里面没有方法和属性。)


图片摘自https://blog.csdn.net/lgh2691861/article/details/52248038
系木见告先生博客中的部分内容,侵权必删。

@另,非空对象可以被强转为父类对象,调用的方法仍为重写后的方法
但是转化为非父类对象会报错

继续

  • null是代表不确定的对象
    java中,null是一个关键字用来标识一个不确定的对象,因而可以将
    null赋给引用类型变量,但是不能赋给基本类型变量

    比如 int a = null;(错误)。 Object o = null(正确)

Java中所有的变量遵循一个原则:先定义,且初始化后,才可以使用。

有时候可以给变量指定一个null的值,以免报错(程序有可能在try语句块中初始化值。)
例:

Connection conn = null;
	try {
		conn = DdriverManager.getConnection("url","user","password")}catch(SQLException e){
		e.printStarkTrace();
		}
		
  • null本身不是对象,也不是Object的实例

虽然null能代表一个不确定的对象,但null字段本身不属于对象
也不是java.lang.Object的实例

//null是否为对象,属于Object类型
	if (null istanceof java.lang.Object){
		System.out.println("null属于java.lang.Object类型")}else{
		System.out.println("null不属于java.lang.Object类型")}

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

  • Java默认给变量赋值
    在定义变量的时候,如果的定义后没有给变量赋值,则java在运行的时候会自动给变量赋值。
    整数型:0
    浮点型:0.0
    布尔型:false
    其他引用类型:null

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

  • null的其他作用:
  1. 判断一个引用类型数据是否为null。可以用==判断
  2. 释放内存,让一个非null引用类型变量指向null。这样这个对象就不再被任何对象引用。等待JVM去回收。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值