You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

《Java完全参考手册》Primitive Type Wrappers章节加粗语句含义咨询

语句含义解释

你提到的加粗英文语句翻译为:两个方法无法引用同一个int类型的实例。
这句话的核心是Java基本类型的传递特性:Java中int、char这类基本类型不属于对象体系,所有场景下都是按值传递,也就是说传递的永远是值的副本,不同方法中的基本类型变量会存在各自独立的栈内存空间,不可能指向同一块内存地址。


示例演示

示例1:基本类型传递效果

public class PrimitiveDemo {
    // 方法1:修改传入的int参数
    public static void changeInt(int num) {
        num = 200;
        System.out.println("changeInt方法内的num值:" + num);
    }

    public static void main(String[] args) {
        int originNum = 10;
        System.out.println("调用changeInt前main方法内的originNum值:" + originNum);
        changeInt(originNum);
        System.out.println("调用changeInt后main方法内的originNum值:" + originNum);
    }
}

运行结果:

调用changeInt前main方法内的originNum值:10
changeInt方法内的num值:200
调用changeInt后main方法内的originNum值:10

结果说明:main方法里的originNum和changeInt方法里的num是完全独立的两个变量,changeInt拿到的只是originNum的值副本,不管怎么修改都不会影响原变量,符合“两个方法无法引用同一个int实例”的描述。


示例2:对比包装类的引用传递效果

为了更直观体现差异,我们用自定义的int包装类做演示:

public class WrapperDemo {
    // 自定义可变int包装类
    static class IntHolder {
        int value;
        public IntHolder(int value) {
            this.value = value;
        }
    }

    // 修改包装类的属性
    public static void changeHolder(IntHolder holder) {
        holder.value = 200;
        System.out.println("changeHolder方法内的value值:" + holder.value);
    }

    public static void main(String[] args) {
        IntHolder originHolder = new IntHolder(10);
        System.out.println("调用changeHolder前main方法内的value值:" + originHolder.value);
        changeHolder(originHolder);
        System.out.println("调用changeHolder后main方法内的value值:" + originHolder.value);
    }
}

运行结果:

调用changeHolder前main方法内的value值:10
changeHolder方法内的value值:200
调用changeHolder后main方法内的value值:200

结果说明:两个方法此时引用的是同一个IntHolder对象实例,修改属性会同步生效,这就是基本类型和包装类的核心差异,也是Java需要设计基本类型包装类的原因之一。


内容的提问来源于stack exchange,提问作者MRM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 13:36:00