❶ true,false,null是java关键字吗它们在内存中究竟是以什么值来存储
楼上的请注意了,一个对象赋值成null再被调用会不出空指针异常么?请考虑清楚,别误导人家!
作为关键字true,false,null都分别代表不同的含义。
"位"是内存中作为存储数据的基本单位,而我们又通常说,一个字节是8位,也就是 1byte = 8bit。
因为内存中,"位"是使用0和1来表示的,所以作为关键字,true的值在内存中就表示1,false在内存中就是表示0。
但是这里不要和整数(int)中的0和1相比,他们占用的内存空间是不一样的。一个int型的变量,占用的内存空间是4个字节,也就是4 * 8 = 32位,与true和false占用的内存空间是不同的。
而作为关键字null,解释起来就更是麻烦了。
当一个对象被声明时(Object o;),这个对象会以一个整数的字节数,只在内存堆栈(stack)中开辟一个内存指针。例如,我们使用Object o = new Object();实例化一个对象,那么在内存中的运行则是:在内存堆栈(stack)中开辟一个4个字节的指针,然后在内存堆区(heap)开辟这个对象所要存储的数据并初始化,然后在将之前在stack中的内存指针中赋上在heap中开辟的空间的首地址。
而如果Object o;没有进行实例化,则不可能使用o的引用。这时为了方便使用,则出现了null关键字。null关键字的意义也就是一个用来初始化对象的空引用。
❷ java浜岀骇锛歯ull鍒板簳绠椾笉绠梛ava鍏抽敭瀛楋纻
涓嶆槸鍏抽敭瀛椼
true锛宖alse锛 null 閮戒笉鏄銆
null is a literal, in the same sense that false, 10, and '\n'
are literals. It's not a "keyword", technically, but it is a character
string that is treated specially by the compiler if the compiler
encounters it in a java source file.
So, no, you cannot name a variable "null". The lexical analyzer will decide that it is not an identifier.