class MyNumber { private int num = 5; public MyNumber(int num) { this.num = num; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public static void main(String args[]) { MyNumber obj1 = new MyNumber(); MyNumber obj2 = new MyNumber(10); obj2 = obj1; obj2.setNum(20); System.out.println(obj1.getNum() + ", " + obj2.getNum()); } }
时间: 2024-02-15 16:04:51 浏览: 33
这段代码存在问题。在实例化`obj1`和`obj2`对象时,`obj1`使用了默认构造函数,而`obj2`使用了带参构造函数。在将`obj2`赋值给`obj1`后,`obj1`指向了同一个对象,即`obj2`指向的对象。因此,当修改`obj2`的`num`值时,`obj1`的`num`值也会被修改。因此,输出结果为"20, 20"。
如果想要输出"5, 20",需要修改代码如下:
```
public static void main(String args[]) {
MyNumber obj1 = new MyNumber(5); // 使用带参构造函数初始化obj1
MyNumber obj2 = new MyNumber(10);
obj2 = obj1;
obj2.setNum(20);
System.out.println(obj1.getNum() + ", " + obj2.getNum());
}
```
这样就能输出"5, 20"了。
相关问题
private String num="12313"
在Java中,使用`private`关键字修饰类的属性时,表示这个属性只能在当前类中被访问和修改,其他类无法直接访问。如果需要访问和修改这个属性的值,可以通过提供公共的访问方法(getter和setter方法)来实现。
对于`private String num = "12313"`这个语句,它定义了一个私有属性`num`,并且为它赋了初始值"12313"。其他类无法直接访问这个属性,只有在当前类的方法中才能访问和修改它的值。
如果需要在其他类中访问和修改这个属性的值,可以提供一个公共的访问方法,例如:
```
public class MyClass {
private String num = "12313";
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
}
```
在上面的例子中,提供了公共的getter和setter方法来访问和修改私有属性`num`的值。其他类可以通过这两个方法来间接地访问和修改`num`的值。
Java监听int型变量num变化的代码
可以使用Java的观察者模式来监听int型变量num的变化,具体代码如下:
```java
import java.util.Observable;
import java.util.Observer;
public class NumObserver implements Observer {
public void update(Observable obs, Object obj) {
if (obs instanceof NumObservable) {
NumObservable numObservable = (NumObservable) obs;
int num = numObservable.getNum();
// 处理num的变化
}
}
}
public class NumObservable extends Observable {
private int num;
public void setNum(int num) {
if (this.num != num) {
this.num = num;
setChanged();
notifyObservers();
}
}
public int getNum() {
return num;
}
}
public class Main {
public static void main(String[] args) {
NumObservable numObservable = new NumObservable();
NumObserver numObserver = new NumObserver();
numObservable.addObserver(numObserver);
int num = 10;
numObservable.setNum(num);
num = 20;
numObservable.setNum(num);
}
}
```
在上面的代码中,NumObservable类继承了Java的Observable类,通过setChanged()和notifyObservers()方法来通知观察者NumObserver,NumObserver类实现了Observer接口,重写了update()方法,在update()方法中处理int型变量num的变化。在Main类中,创建了NumObservable对象和NumObserver对象,并将NumObserver对象添加到NumObservable对象的观察者列表中,然后通过setNum()方法来改变int型变量num的值,并观察NumObserver对象是否能够捕获到变化。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)