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 ...
随机推荐
- C# Split 字符文本中的字符太多
问题: ] { '<h1>', '</h1>' }); 原因: Split()里面是用char类型不是string字符串类型,所以只能用一个字符,必须先把多个字符替换成一个字符 ...
- 一次Oracle宕机切换后产生ORA错误的处理过程
问题背景 机房意外断电后Oracle主服务器启动失败,Oracle备机接管 为了安全,管理员对于数据库做expdp的逻辑备份.但备份时发现AttributeInstance表备份失败,提示ORA-01 ...
- hdu 5919--Sequence II(主席树--求区间不同数个数+区间第k大)
题目链接 Problem Description Mr. Frog has an integer sequence of length n, which can be denoted as a1,a2 ...
- hihoCoder1498-Diligent Robots
#1498 : Diligent Robots Time Limit:10000ms Case Time Limit:1000ms Memory Limit:256MB Description The ...
- BZOJ1258: [CQOI2007]三角形tri
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1258 如果最后一位是4,那就改成123就好了. 然后最后一位不是4的话,至多三个答案,然后可以 ...
- hdu_2089(数位dp)
hdu_2089(数位dp) 标签: dp 我初次接触数位dp表面上看上去挺简单,但是仔细学还是要考虑很多细节的.wa了无数次,这里引入一个 很好地博客 #include<cstdio> ...
- 《JavaScript设计模式与开发实践》知识点笔记
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC" } p.p2 { margin: 0.0px ...
- JavaScript八张思维导图—操作符
JS基本概念 JS操作符 JS基本语句 JS数组用法 Date用法 JS字符串用法 JS编程风格 JS编程实践 不知不觉做前端已经五年多了,无论是从最初的jQuery还是现在火热的Angular,Vu ...
- sublime 中HTML快捷键
- JavaSE笔记-异常
Java 异常 Throwable类的体系结构(一些常用的) 异常分类 checked,unchecked 区分:RuntimeException及其子类,Error类及其子类,是unchecked ...