class t{ int m; public t(int m){this.m=m;} public t change(t t1){ t1=this; t1.m=14; return t1; } } 执行如下代码,输入结果? t t1=new t(10); t t2=new t(20); t t3=t1.change(t2); t3.m=80; System.out.println(t1.m); System.out.println(t2.m); System.out.println(t3.m);
时间: 2023-06-23 13:09:51 浏览: 31
输出结果为:
```
14
20
80
```
解释:
- 首先创建了两个 `t` 类型的对象 `t1` 和 `t2`,并分别初始化为 `10` 和 `20`。
- 调用 `t1` 的 `change` 方法,传入参数 `t2`,并将 `t2` 的值赋给 `t1`。此时 `change` 方法中的 `t1` 指向了 `t2` 所指向的对象,即 `t1` 和 `t2` 指向了同一个对象。
- 在 `change` 方法中,将 `t1.m` 的值修改为 `14`,然后返回 `t1`。
- 然后在主函数中,将 `t3` 的值赋为 `t1.change(t2)` 的返回值,即 `t1` 自身,此时 `t3` 和 `t1` 指向了同一个对象。
- 最后修改 `t3.m` 的值为 `80`,输出 `t1.m`、`t2.m` 和 `t3.m` 的值分别为 `14`、`20` 和 `80`。
相关问题
class t{ int m; public t(int m){this.m = m;} public t change(t t1){ t1 = this; t1.m = 14; return t1; } }
这是一个简单的Java类,包含一个int类型的成员变量m和一个构造函数,构造函数传入一个int类型参数并将其赋值给m。还包含一个名为change的方法,该方法接受一个t类型的参数t1,将其赋值为当前对象(this),然后将t1的m成员变量设置为14,并返回t1。这个方法的意义不太清楚,可能是为了演示Java中对象的引用传递和值传递的区别。
class t{ int m; public t(int m){this.m = m;} public t change(t t1){ t1 = this;public class ss { public static void main(String[] args) { t t1 = new t(10); t t2 = new t(20); t t3 = t1.change(t2); t3.m = 80; System.out.println(t1.m); System.out.println(t2.m); System.out.println(t3.m); } } t1.m = 14; return t1; } }运行代码
这段代码会输出以下内容:
```
10
20
80
```
在 `main` 方法中,首先创建了三个 `t` 类型的对象 `t1`、`t2` 和 `t3`,分别初始化为 `new t(10)`、`new t(20)` 和 `t1.change(t2)`。然后对 `t3` 的成员变量 `m` 进行了修改,将其赋值为 `80`。
在 `change` 方法中,传入的参数为 `t1` 和 `t2`,但是在方法中并没有使用 `t2`,而是将 `t1` 的引用指向了 `this`,即当前对象。在方法返回时,返回的是 `t1` 的引用,因此 `t3` 实际上指向的是 `t1`,而不是 `t2`。
因此,对 `t3` 的修改实际上是对 `t1` 的修改,因此输出结果为 `10 20 80`。