我的问题是程序中以下代码的用途。
Sample obj=null;
这是什么意思?
可以哪种方式使用它?
答案 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
对象已分配给变量obj
;
obj
是一个引用变量(或引用),引用(或指向)该对象。考虑语句Person obj = null;
。上面说明了Person
和obj
的含义。什么是null
?
空值
Java编程语言中的类型分为两类:
还有一种特殊类型:null
。
空文字(来自Java Language Specification):空类型有一个值,即空引用,由空文字null
表示,它由ASCII形成字符。空文字始终是空类型。 null类型是特殊的,表达式null的类型没有名称。由于null类型没有名称,因此无法声明null类型的变量或将其强制转换为null类型。
对象和空值
考虑以下语句:
Person obj1 = new Person("Krish", "Bombay");
Person obj2 = null;
Person
对象。变量obj1
和obj2
的类型为Person
,可以保存类型为Person
的对象(或其子类,例如Employee
,其中{{ 1}}扩展Employee
)或Person
。null
和obj1
)的引用。这些引用值是指向这些对象的指针,还有一个特殊的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
答案 1 :(得分:0)
String str = null;
这意味着str是没有指向任何地方的引用类型。此引用是在堆栈中创建的。
但是,
String str = new String();
这意味着str引用类型现在指向在堆中创建的String对象。