Java中的null值总结
自我总结,有什么不对或不到位的地方,请指出,感激不尽!
目的:熟练掌握java中null值出现的情况,避免NullPointerException
代码环境准备:需要引入junit;将代码package部分改成自己的package名。然后即可单元测试。
需要理解的概念:
包装类:例如:Integer,Long,Double,Boolean等,对应的基本类型为:int,long,double,boolean等
自动装箱:java提供的自动将基本类型的变量转换成包装类型的变量的功能。
自动拆箱:java提供的自动将包装类型的变量转换成基本类型的变量的功能。
上代码:JavaNull.java
package com.core.test; import org.junit.Test; public class JavaNull {
/*java version : 1.6 */ public static String name; //模拟装箱(该case仅是用来帮助理解自动装箱过程)
@Test
public void test001(){
int a = 10 ;
Integer A = Integer.valueOf(a);
put(A);
} //模拟拆箱(该case仅是用来帮助理解自动拆箱过程)
//若包装类型变量值为null,转换成基本类型的变量时,不会赋值成对应的初值,会报NullPointException
@Test
public void test002(){
Integer A = null;
int a = A.intValue(); //NullPointException
put(a);
} //String类型的对象判断非空并且非空字符串,则如case test003所示即可
@Test
public void test003(){
String name = null ;
if(null !=name && !name.isEmpty()){
put(null);
}
} //静态变量未初始化,但不会报空指针异常,因为虚拟机在加载该类的同时,会初始化静态变量值为null
@Test
public void test004(){
put(name);
} //当Integer对象的值超过127时,引用对象不再指向原来的内存地址,所以case test005打印结果为:"a == b",test006打印结果为:"a != b"
//当变量为引用类型时,"==" 判断变量是否指向同一内存地址,".equal()"判断变量的值是否相等
@Test
public void test005(){
Integer a = 100;
Integer b = 100;
if(a == b){
put("a == b");
}else{
put("a != b");
}
}
@Test
public void test006(){
Integer a = 128;
Integer b = 128;
if(a == b){
put("a == b");
}else{
put("a != b");
}
} //转换(null值是所有引用类型的默认值,可以强制转换为任一对象类型)
//猜想:java中存在一个潜在的Null类概念,是所有引用类型的变量的子类,test008打印结果为:"test--null",说明存在一个潜在Null.toString方法
@Test
public void test007(){
String a = (String)null;
Double b = (Double)null;
}
@Test
public void test008(){
String temp = null;
put("test--"+temp);
} //静态方法可以由类名直接调用,该case只是为了测试
//若对象test值为null,则用该对象调用静态方法时,不会报NullPointException,但调用非静态方法则会报NullPointException
@Test
public void test009(){
JavaNull test = null;
test.getStaticMethod();
test.getNotStaticMethod();//NullPointException
} //null值比较会返回true
@Test
public void test010(){
if(null == null ){
put("yes");
}else{
put("no");
}
} //case test011和test012为instanceof的用法
//instanceof说明:如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false
@Test
public void test011(){
// Integer num = null;
Integer num = new Integer(0);;
if(num instanceof Integer){
put("yes");
}else{
put("no");
}
} //instanceof可以匹配数组
@Test
public void test012(){
String str[] = {"abc","bcd"};
if(str instanceof String[]){
put("yes");
}else{
put("no");
}
} public static void getStaticMethod(){
put("StaticMethod");
} public void getNotStaticMethod(){
put("NotStaticMethod");
} public static void put(Object obj){
System.out.println(obj);
} }
以上是我的总结,参考文章:http://www.importnew.com/14229.html
http://www.cnblogs.com/danne823/archive/2011/04/22/2025332.html
Java中的null值总结的更多相关文章
- java中,null值可以被强制转换为任何类型
java中,null值可以被强制转换为任何类型
- Java中有关Null的9件事
对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常 (NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我 ...
- 转!!Java中关于Null的9个解释(Java Null详解)
对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我认 ...
- JAVA中String = null 与 String = "" 的区别
JAVA中String = null 与 String = ""的区别 笔者今天在Debug的时候发现的NPE(NullPointerException),辛辛苦苦地调试了半天,终 ...
- 关于Java中的Null
什么是Java中的Null? null在Java中是一个非常重要的概念,它最初是为了表示缺少某些东西,例如缺少用户.资源或任何东西而发明出来的.但是这也为Java程序员带来了很多麻烦,比如最常见的空指 ...
- Java 中遇到null 和为空的情况,使用Optional来解决。
Java 中遇到null 和为空的情况,使用Optional来解决 示例代码: package crazy; import java.util.Optional; class Company { pr ...
- Java中的Null是什么?
对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我认 ...
- Java中有关Null的9件事(转)
对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我认 ...
- JDK8 Java 中遇到null 和为空的情况,使用Optional来解决。
空指针是我们最常见也最讨厌的异常,写过 Java 程序的同学,一般都遇到过 NullPointerException :) 初识null 详细可以参考[jdk 1.6 Java.lang.Null.P ...
随机推荐
- GCC编译选项 -OX[转]
作者:知乎用户链接:https://www.zhihu.com/question/27090458/answer/137944410来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- python基础的输入字符串的格式化
name = input("name:") age = input ("age:") job = input ("job") info = ...
- 11、ABPZero系列教程之拼多多卖家工具 拼团提醒功能页面实现
上一篇讲解了拼团提醒逻辑功能实现,现在继续实现页面功能. Core项目 打开AbpZeroTemplate-zh-CN.xml语言文件,在末尾添加如下代码: 文件路径:D:\abp version\a ...
- ajax中url赋json格式的值时发生中文乱码的相关问题
具体流程:转入到jsp界面时会加载ajax,ajax转到url时传带hide在jsp界面的值titleString,其来源见下面的代码. String title=new String("\ ...
- 51Nod 1004 n^n的末位数字(日常复习快速幂,莫名的有毒,卡mod值)
1004 n^n的末位数字 题目来源: Author Ignatius.L (Hdu 1061) 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数N,输出 ...
- [hdu5225][BC#40]Tom and permutation
好久没写题解了..GDKOI被数位DP教做人了一发,现在终于来填数位DP的大坑了>_<. 发现自己以前写的关于数位DP的东西...因为没结合图形+语文水平拙计现在已经完全看不懂了嗯. 看来 ...
- See you~(二维树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1892 See you~ Time Limit: 5000/3000 MS (Java/Others) ...
- Spring学习日志之Spring Security配置
依赖引入 <dependency> <groupId>org.springframework.security</groupId> <artifactId&g ...
- UE4 分层材质 Layerd Materials
在UE4中最正规的材质制作流程就像: 建立新材质,并将其调整为达至完美. 在内容浏览器中,建立新材质函数,并将所有材质函数节点复制/粘贴到其中. 将网络连接到新的 Make Material Attr ...
- JS高级用法
1.重复定时器 setTimeout(function() { // 处理中 setTimeout(arguments.callee, 1000); }, 1000) 这种模式链式调用了 setTim ...