已知类定义如下: class One1{ int x =10; void change(int x){ x=100; } } 分析执行如下语句,输出效果? int x=50; One1 o=new One1(); System.out.println("change前x="+x); o.change(x); System.out.println("change后x="+x); System.out.println("change前One对象的x属性值="+o.
时间: 2023-12-10 07:02:19 浏览: 40
执行以上代码,会输出以下结果:
```
change前x=50
change后x=50
change前One对象的x属性值=10
```
原因是:
1. 在执行 `o.change(x)` 方法时,虽然参数 `x` 与类中属性 `x` 重名,但是在方法内部使用的 `x` 是方法的局部变量,而不是类中的属性。
2. 在 `o.change(x)` 方法内部,虽然将 `x` 的值修改为了 `100`,但是只是修改了方法内部的局部变量,对类中属性 `x` 没有影响。
3. 因此,最终输出的 `change后x` 仍然是 `50`,而输出的 `One对象的x属性值` 仍然是类中属性 `x` 的初始值 `10`。
相关问题
已知类定义如下: public class t{ int x; public void change(t x){ x.x=x; } } 如果外部执行 t x1=new t(); x1.x=20; t x2=new t(); x2.x=10 x1.change(x2); System.out.println(x1.x+" "+x2.x); 输出结果是? A. 10 10 B. 20 10 C. 程序编译出错 D. 10 20
程序会输出 "10 10"。原因是在执行 `x1.change(x2)` 的时候,传递的是 x2 的引用,即 x1 和 x2 指向了同一个对象。在 `x1.change(x2)` 方法中,将 `x.x` 赋值为 `x`,即将 `x1.x` 的值赋为了 `x2` 的引用,因此 `x1.x` 和 `x2.x` 的值都变成了 10。
已知:int k=7, x=12; 则执行语句( )后x的值为0。
一种可能的执行语句是:
```c++
x = x % k;
```
因为 12 % 7 的结果是 5,所以执行完上述语句后,x 的值为 5。但是题目要求 x 的值为 0,因此我们需要在上述语句的基础上再执行一次取模运算,即:
```c++
x = (x % k) % k;
```
这样就可以保证 x 的值为 0。