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

为何仅能通过类构造方法参数复制基本数据类型?

聊聊Java构造方法里引用类型和基本类型的赋值区别

刚入门Java的时候,很多人都会被引用类型和基本类型的赋值逻辑搞懵,我拿两个实际代码例子给你拆解下:

1. 引用类型的赋值逻辑(以ImageView为例)

先看这段代码:

class Example {
    public ImageView imageView;
    public Example(ImageView imageView) {
        // 假设传入的imageView已经完成初始化
        this.imageView = imageView;
    }
}

这里要划重点:this.imageView并没有创建一个新的ImageView实例,它只是指向了构造方法参数传入的那个ImageView对象。简单说,外部的ImageView和当前Example对象里的imageView是同一个“东西”,如果你改了其中一个的属性,另一个也会同步变化。

2. 基本类型的赋值逻辑(以int为例)

再看这段基本类型的代码,逻辑就完全不同了:

class Example {
    public int i;
    public Example(int i) {
        this.i = i;
    }
}

这里的this.i = i是实打实的值复制——把参数i的数值拷贝了一份,赋值给当前Example对象的i属性。外部的int变量和对象里的i是完全独立的两个变量,修改其中一个对另一点影响都没有。

补充:关于String类的特殊情况

你提到了String类,它虽然属于引用类型,但因为是不可变类,所以表现出来的行为有时候会让你误以为是值传递。比如你给String变量赋值新内容时,其实是生成了一个新的String对象,而不是修改原来的对象,这才造成了“像值复制”的错觉,但本质上它还是引用传递的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:28:16