null
是什么?
null
是任何实例吗?
null
属于哪个集合?
它在内存中如何表示?
null
是什么?
null
是任何实例吗?
null
属于哪个集合?
它在内存中如何表示?
Java中的null与C++中的nullptr类似。
C++中的程序:
class Point
{
private:
int x;
int y;
public:
Point(int ix, int iy)
{
x = ix;
y = iy;
}
void print() { std::cout << '(' << x << ',' << y << ')'; }
};
int main()
{
Point* p = new Point(3,5);
if (p != nullptr)
{
p->print();
p = nullptr;
}
else
{
std::cout << "p is null" << std::endl;
}
return 0;
}
同样的程序在Java中:
public class Point {
private int x;
private int y;
public Point(int ix, int iy) {
x = ix;
y = iy;
}
public void print() { System.out.print("(" + x + "," + y + ")"); }
}
class Program
{
public static void main(String[] args) {
Point p = new Point(3,5);
if (p != null)
{
p.print();
p = null;
}
else
{
System.out.println("p is null");
}
}
}
Java 中有两种主要类型的分类:原始类型和引用类型。声明为原始类型的变量存储值;声明为引用类型的变量存储引用。
String x = null;
从JLS中简短明了地回答所有问题的正式答案如下:
3.10.7. 空字面量
空类型只有一个值,即空引用,表示为由ASCII字符组成的空字面量null。
空字面量始终是空类型。
仅分配给空引用类型的引用。您不会将任何值(对象)分配给该引用。 这种分配对于JVM来说很具体,它将占用多少引用以及在哪个内存区域中分配。