java中null 关键字

Java中,null是一个关键字,用来标识一个不确定的对象。
null常见意义:
一、null是代表不确定的对象
  Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,

但不可以将null赋给基本类型变量。
比如:int a = null;是错误的。Ojbect o = null是正确的。
Java中,变量的适用都遵循一个原则,先定义,并且初始化后,才可以使用。我们不能int a后,

不给a指定值,就去打印a的值。这条对对于引用类型变量也是适用的。
有时候,我们定义一个引用类型变量,在刚开始的时候,无法给出一个确定的值,但是不指定值,

程序可能会在try语句块中初始化值。这时候,我们下面使用变量的时候就会报错。这时候,可以

先给变量指定一个null值,问题就解决了。

例如:

Connection conn = null;
try {
conn = DriverManager.getConnection("url", "user", "password");
} catch (SQLException e) {
e.printStackTrace();
}

String catalog = conn.getCatalog();

如果刚开始的时候不指定conn = null,则最后一句就会报错。

二、null本身不是对象,也不是Objcet的实例

null本身虽然能代表一个不确定的对象,但就null本身来说,它不是对象,也不知道什么类型,

也不是java.lang.Object的实例。
可以做一个简单的例子:

//null是对象吗? 属于Object类型吗?
if (null instanceof java.lang.Object) {
System.out.println("null属于java.lang.Object类型");
} else {
System.out.println("null不属于java.lang.Object类型");
}

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

三、Java默认给变量赋值

在定义变量的时候,如果定义后没有给变量赋值,则Java在运行时会自动给变量赋值。赋值原则

是整数类型int、byte、short、long的自动赋值为0,带小数点的float、double自动赋值为0.0,

boolean的自动赋值为false,其他各供引用类型变量自动赋值为null。
  这个具体可以通过调试来看。

四、容器类型与null

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

五、null的其他作用

1、判断一个引用类型数据是否null。 用==来判断。
  2、释放内存,让一个非null的引用类型变量指向null。这样这个对象就不再被任何对象应用了。等待JVM垃圾回收机制去回收。

时间: 2024-08-29 19:13:45

java中null 关键字的相关文章

关于Java中null的十点详解

对于每一个Java程序员来说,null肯定是一个让人头痛的东西,连Java的发明者都承认这是一项巨大的设计失误,今天就来总结一下Java中关于null的知识. 1.null不属于任何类型,可以被转换成任何类型,但是用instanceof永远返回false.2.null永远不能和八大基本数据类型进行赋值运算等,否则不是编译出错,就是运行出错.3.null可以和字符串进行运算.4.同种类型的null,比较都返回true,null==null也返回true. 持续更新中...... 下面将用十个例子来

Java中transient关键字的应用

今天跟JDK源码的时候发现transient ,感觉从来没见过,于是用google查了一下. Java语言的关键字,用来表示一个域不是该对象串行化的一部分.当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的. 下面我们查创建一个LoginFile的类: public class LoginFile implements Serializable{ private static final long serialVersio

java中volatile关键字

java中volatile关键字 学习ImageLoader源码时遇到遇到这么一个关键字,以前没遇到过,也不明白是何含义,网上找了部分资料,总结记录一下. 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉.Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制. synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来

Java中的关键字/保留字

Java关键字是Java语言保留供内部使用的,如class用于定义类. 关键字也可以称为保留字,它们的意思是一样的,我们不能使用关键字作为变量名或方法名. 表2-1 Java中的关键字/保留字 abstract assert boolean break byte case catch char class const continue default do double else extends final finally float for goto if implements import

转:java中volatile关键字的含义

转:java中volatile关键字的含义 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制. synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized 和 块语句,在多线程访问的时候,同一时刻只能有一个线程能够用 sync

java中的关键字static(静态变量)和final定义常量

1 package point; 2 3 class Point { 4 5 int x = 0; 6 int y = 0; 7 static int z = 100; // 定义静态变量z,类变量 8 static final double PI = 3.1415926;// final定义常量,它的值在运行时不能被改变 9 10 Point(int a, int b) { 11 //PI=3.1415926; 12 /* 13 * 当使用静态常量的时候,不能在构造函数中初始化, 因为静态时,

Java中this关键字的使用

Java中this关键字的使用主要有两处: 1.构造方法 this指的是调用构造方法进行初始化的对象. //有参构造 public Human(String name, int age) { this(); //调用无参构造 //this(name); //调用有参构造(参数为name的构造方法) this.name = name; this.age= age; } 2.普通方法(非静态方法) this指的是调用该方法的对象. //普通方法 public void setName(String

Java复习笔记--java中this 关键字

Java中this关键字,this可以调用类的成员变量和成员方法,this还可以调用类中的构造方法.使用这种方式值得注意的是, 只可以在无参构造方法中的第一句使用this关键字调用有参构造方法. public class AnyThting{ public AnyThting(){ this("this 调用有参构造方法"); System.out.println("无参构造方法"); } public AnyThting(String name){ System.

java中static关键字总结

Java中,static关键字一般情况下有四种用法: 用来修饰一个变量. 用来修饰一个方法. 用来修饰一个内部类. 用来修饰一段代码块. 1 public class Student{ 2 String name; 3 static int count;//static修饰的变量 4 static{//static修饰的代码块 5 count=0; 6 } 7 public static void playGame(){//static修饰的方法 8 System.out.println("我爱