[英]Are primitive types only types not inherited from java.lang.Object?
我正在审查java角色的原始类型面试问题。 我在测试期间被问到这样的陈述。
基本类型是不从java.lang.Object继承的任何类型。
还有其他类型不扩展java.lang.Object
。 例如, null
是一个值,因此它不会扩展它。 虽然抽象类可以,但接口也不会扩展它。
关于原始类型,答案是肯定的,不是。 当你编写它们时,原始类型不会从java.lang.Object
。 但是,在将java代码编译为java字节码时,编译器会执行一项称为自动装箱的操作 。
简而言之,在编译时,编译器将所有原始值转换为它们的包装类( Integer
为int, Boolean
值为Boolean
值等)。 但是,他有效地做到了这一点,因为它转换了int i = 0;
into Integer i = Integer.valueOf(0);
。 在幕后,包装类型的valueOf
函数是一个Flyweight Factory,它最多只有一个Integer 0的实例,一个Integer 1等...
因此,在编码时使用基本类型,但JVM使用原始类型的包装器,它实现了java.lang.Object
。
不,他们不是。 接口也不从java.lang.Object
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.