null什么意思
null是什么?
在学习过对象的实例化之后, 我们知道对象的实例化就是为对象的创建开辟存储空间。
对于一条实例化语句:
Student stu=new Student(); //语句1
先是声明一个名为stu的Student类型变量,然后利用new关键字为其创建实例。
与下面的语句相比较:
Student stu; //语句2
语句2是声明一个类型为Student 的变量stu,从表述习惯上讲stu 是实例变量,但实际上此时stu并未成为一个真正的实例,它仅仅只是一个变量名字。
stu= new Student(); //语句3
语句3的执行结果就使得stu真正成为了一个Student实例,它指向了内存中的某块地址空间。
语句1是一步到位,定义了一个实例变量并同时赋值。
1.对于null的理解
为了明确地表示那些仅有名字而没有实例空间的变量的具体内容,java引入了关键字null, null 就是表示“空”的意思,是绝对意义上的空,这个空指的是不存在的意思。为了更好地理解null是什么,这里举个例子:
有个准备进人施工阶段的楼字建筑项目,设计图纸已经确定了,建筑设计师们正在讨论某间单元的装修效果时,该单元的房号已经命名,假设为A901,此时,A901就是null的,它相当于上面写的语句2(一个名为stu的Student),这里它只是一个名为A901的房屋单元。
而当该楼字项目已经施工完毕的时候,则A901就地在它所处的位置上真正地占有了一块物理空间,此时它就是非null(非空)了,也就是说它拥有了一块实例化的空间。就算这间房屋里头没有摆放东西,它也是存在的。我们千万不能将日常表达语“一间空的房问”等同于Java语言中的"房间为空”。
在Java中,假设房间类为Room,则:
Room room=null; //房间为空,房间room只是一个名字,实际不存在。
Room room= new Room(); //一间空的房间,这间房里没东西。
null就是空,抽象意义上的空,空就是无的概念。
对于null的理解,应该是这样的:仅有一个变量名,但实际上不存在。
2. null的作用
(1) 判断一个对象实例是否null,
用if(obj= = null){}来判断。
(2) 释放内存,让一个非null的实例变量赋值为null,这样这个实例指针引用就被释放了,等待JVM回收其对应的内存垃圾。
3.使用null时要注意的问题
(1) null是关键字,是大小写敏感的,不能将null写成Null或NULL.
(2) null用来标识一个空的对象,因此不能将null赋给基本型的变量。比如:
String s= null; //正确
int i=null; //错误,应修正为"int i=0;"char c= null; //错误
(3) 对于一个值为null 的对象,如果你试图去访问其成员,则会触发空指针异常(NullPointerException)。
(4) 用instancaeof(判断对象是否属于某种类型)去操作null对象,会返回false.
如:有语句: String s= null;
则“s instanceof String”的结果是false。
(5) 可以使==或着!=操作来比较null值,但是不能使用其他算法或者逻辑操作,例如<或者>。
在Java中,null ==null将返回true。
相关阅读
JAVA异常处理机制(二)——throws/throw的区别和使用
JAVA中throw和throws的区别:https://www.cnblogs.com/xiohao/p/3547443.html 区别:(摘自上面的博客)1、throws出现在方法函数头;而thro
Java编程软件——Eclipse;下载地址:eclipse.org选择下载,它会根据你的操作系统推荐下载,点击后还可以选择下载的镜像;下载完成后进入
1.关于注释单行注释可以嵌套,多行注释不能嵌套 2.关键字 字母全部小写(goto和const作为保留字,目前不使用) 3.标识符 不能数字开头|
说到发邮件主要的协议有: SMTP(Simple Mail Transfer Protocol即简单邮件传输协议)主要是用来传输邮件的协议 POP3(Post Off
Javascript history对象的 history.pushState() 和 hi
history.pushState() 和 history.replaceState() 是history对象的两个新增的方法,是可以很好的操作历史记录的方法;history.State()