加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如果int不继承Object,那么为什么“String.format(String

发布时间:2020-12-15 04:44:18 所属栏目:Java 来源:网络整理
导读:我看过这篇文章: Is int an object in Java?. 在帖子中,有人认为int不是从Object继承的.如果是这样的话,为什么下面的代码编译没有任何错误?鉴于int不是Object而且format()方法的签名是public static String format(String format,Object … args),如文档:
我看过这篇文章: 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引用).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读