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 ...
随机推荐
- ssm maven spring AOP读写分离
ssm maven spring AOP读写分离 总体流程 配置最开始写在pom.xml文件,解析到数据库配置文件,再解析到spring配置文件. 自定义注解DataSource:通过这个注解并且在s ...
- CTF---Web入门第三题 这个看起来有点简单!
这个看起来有点简单!分值:10 来源: 西普学院 难度:易 参与人数:10515人 Get Flag:3441人 答题人数:4232人 解题通过率:81% 很明显.过年过节不送礼,送礼就送这个 格式: ...
- 详解zkw算法解决最小费用流问题
网络流的一些基本概念 很多同学建立过网络流模型做题目, 也学过了各种算法, 但是对于基本的概念反而说不清楚. 虽然不同的模型在具体叫法上可能不相同, 但是不同叫法对应的思想是一致的. 下面的讨论力求规 ...
- Travelling(spfa+状态压缩dp)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 Travelling Time Limit: 6000/3000 MS (Java/Others ...
- BOX
题目连接:http://acm.tju.edu.cn/toj/showp2392.html2392. Box Time Limit: 1.0 Seconds Memory Limit: 655 ...
- HDU--2114
Calculate S(n) Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 【Git】Git基础操作
repository:版本库又名仓库,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以&q ...
- 分布式计算框架学习笔记--hadoop工作原理
(hadoop安装方法:http://blog.csdn.net/wangjia55/article/details/53160679这里不再累述) hadoop是针对大数据设计的一个计算架构.如果你 ...
- setTimeout()方法,你真的懂吗?
今天在群里看到了一道经典的javascript题型,之前也遇到过,可是再次遇到时,还是做错,还是不理解,因此这里来做个笔记吧! 不说了,直接上代码吧 for(var i=1; i<=9; i++ ...
- HDU 2412 Farm Irrigation
题目: Benny has a spacious farm land to irrigate. The farm land is a rectangle, and is divided into a ...