java – 如果int不继承Object,那么为什么“String.format(String
我看过这篇文章:
Is int an object in Java?.
在帖子中,有人认为int不是从Object继承的.如果是这样的话,为什么下面的代码编译没有任何错误?鉴于int不是Object而且format()方法的签名是public static String format(String format,Object … args),如文档:javadoc for String所示! public class Testing { public static void main(String[] args) { int integer = 7; String str = String.format("%03d",integer); System.out.println(str); } } 我还读过“Autoboxing”.这到底是什么意思?在编译之前是否所有基元都被适当的Object替换了?如果是这样,那么在Integer(Integer [])上使用大型int(int [])时,是否有使用内存的优势?类似的论据遵循双重等. 任何见解都是受欢迎的. 解决方法
当调用String.format(“%d”,myInt)时,myInt会自动(并隐式)包装在Integer实例中,该实例扩展了Object,因此它会编译.
关于数组,由于某种原因,从primitiveType []到WrapperClass []的转换不是自动的.如果您尝试使用原始类型的数组,其中包含预期的包装类数组,则会导致编译错误. 与使用int相比,使用Integer会产生开销,因为您需要分配和存储引用.但是,当使用介于-128和127之间的Integer值时,此开销受到限制,因为这些值是合并的(这意味着Integer的所有实例在此间隔中包含一个值指向unic引用). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |