该null值指向任何值,因此它是(不存在的)引用.在Java中,Object是一种引用类型,因此对象类型值可以保存空值(例如Integer).另一方面,基元是值类型而不是引用类型,因此它们不能null.
出于性能考虑,Java已经以这种方式设计.使用引用比使用值更慢,内存消耗更多.
我尝试用C++解释它:
在C++中,整数,布尔值,...直接分配给内存,因此如果创建一个整数变量,它只使用该值的四个字节.如果要创建可为空的整数变量,则必须创建指向存储该值的内存的指针,因此如果指针为空(0x0),则它指向任何内容.如果它不为null,则指向整数的实际值.
如果要添加两个整数,可以使用单个汇编程序指令执行此操作,因为这些值可以直接传递给处理器.
这可以转移到C#/ Java的字节码.原语可以由C#/ Java-Virtual Machine直接使用.所有其他变量不能直接使用,必须由编译器"取消引用".
| 归档时间: |
|
| 查看次数: |
826 次 |
| 最近记录: |