样本obj = null; -用法和意义

时间:2018-07-18 05:19:59

标签: java

我的问题是程序中以下代码的用途。

Sample obj=null;

这是什么意思?

可以哪种方式使用它?

2 个答案:

答案 0 :(得分:0)

一个人具有名称和城市属性。让我们定义一个类Person

public class Person {
    private String name;
    private String city;
    public Person(String name, String city) {
        this.name = name;
        this.city = city;
    }
    public String getName() {
        return name;
    }
    public String getCity() {
        return city;
    }
}

考虑以下语句:Person obj = new Person("Krish", "Bombay");

  • Person是一门课程。
  • obj是类型Person的变量名。
  • new Person(...)创建(或实例化)一个对象(或 类型为Person且属性为name="Krish"的实例) address="Bombay"
  • 新创建的Person对象已分配给变量objobj是一个引用变量(或引用),引用(或指向)该对象。

考虑语句Person obj = null;。上面说明了Personobj的含义。什么是null

空值

Java编程语言中的类型分为两类:

  • 原始类型和引用类型。
  • 原始类型(布尔型,字节型,短型,整型,长型,字符型,浮点型和 双)。
  • 引用类型是类类型,接口类型和数组 类型。

还有一种特殊类型:null

空文字(来自Java Language Specification):空类型有一个值,即空引用,由空文字null表示,它由ASCII形成字符。空文字始终是空类型。 null类型是特殊的,表达式null的类型没有名称。由于null类型没有名称,因此无法声明null类型的变量或将其强制转换为null类型。

对象和空值

考虑以下语句:

Person obj1 = new Person("Krish", "Bombay");
Person obj2 = null;
  • 对象是动态创建的类类型的实例;在这种情况下为Person对象。变量obj1obj2的类型为Person,可以保存类型为Person的对象(或其子类,例如Employee,其中{{ 1}}扩展Employee)或Person
  • 引用类型的值是对对象(nullobj1)的引用。这些引用值是指向这些对象的指针,还有一个特殊的null引用,它不引用任何对象。

此外,类型为obj2(例如,T)的数组可以容纳空值,类型为Person的变量也可以容纳空引用。
< br />

接口和空

考虑以下语句:

java.lang.Object

接口类型(Integer i = new Integer(12); Comparable comp = null; comp = i; )的变量(comp)可以保存空引用或对实现该接口的任何类的任何实例(例如Comparable)的引用。在上面的代码段中,Integer是一个接口,Comparable是一个类,两者均在Integer中定义。而且,java.lang package实现了Integer

样本obj = null;

Comparable

可以将null类型的值分配给任何引用类型,从而导致该类型的null引用(请参见上面的代码片段中的语句1和3)。通过将值分配给引用,可以将null类型的值转换为引用类型(语句2)。

空引用用法

空引用的对象也可以在方法调用1: Person obj = null; 2: obj = new Person("Pete", "Aukland"); 3: obj = null; 运算符,引用相等运算符instanceof==!=的串联中使用。使用方法调用并使用null检查引用相等性的示例:

String

上述方法的调用方式如下:

private void printPerson(Person p) {
    if (p != null) {
        System.out.println(p.getName() + " : " + p.getCity());
    }
    System.out.println(p.getName());
}

NullPointerException

有一个类Person obj = new Person("Pete", "Aukland"); printPerson(obj); // this will print "Pete : Aukland" and "Pete" obj = null; printPerson(obj); // this will throw a NullPointerException (see note below) 。这是运行时异常。当应用程序在需要对象(what a null case is...)的情况下尝试使用null时,抛出此异常。

零垃圾收集(GC)

删除对对象的引用的一种方法是将引用对象的引用变量设置为null。在下面的示例代码中,如果创建,使用了java.lang.NullPointerException对象,然后最终为其分配了null,并且不再使用(或未引用)该对象,则该对象可以使用GC。

Person

另请参阅:Introduction to Java garbage collection

答案 1 :(得分:0)

String str = null;

这意味着str是没有指向任何地方的引用类型。此引用是在堆栈中创建的。

但是,

String str = new String();

这意味着str引用类型现在指向在堆中创建的String对象。