class MethodDemo {
private int swp = 10; public void scopeDemo() {
int data = 100;
System.out.println("hello");
} public int getData() {
return swp;
} public void setData(int data) {
swp = data;
}
}public class MethodMember {
public static void main (String[] args) {
MethodDemo methodDemo = new MethodDemo();
//methodDemo.scopeDemo();
System.out.println(methodDemo.getData()); methodDemo.setData(100);
System.out.println(methodDemo.getData());
}}输出结果为:10,100
请问第一个输出值为什么会是10??????
没有注释掉正确代码如下class MethodDemo {
private int swp = 10; public void scopeDemo() {
int data = 100;
System.out.println("hello");
} public int getData() {
return swp;
} public void setData(int data) {
swp = data;
}
}public class MethodMember {
public static void main (String[] args) {
MethodDemo methodDemo = new MethodDemo();
methodDemo.scopeDemo();
System.out.println(methodDemo.getData()); methodDemo.setData(100);
System.out.println(methodDemo.getData());
}}
methodDemo.scopeDemo(); //输出hello,执行完之后data超出作用域,所以失效
System.out.println(methodDemo.getData()); //得到swp默认值10,所以输出10
methodDemo.setData(100); //调用setData方法,改变对象methodDemo的swp的值为100
System.out.println(methodDemo.getData()); //所以输出100
int data = 100;
System.out.println("hello");
}中的data是一个局部变量,它只在当前函数内有效!
public void setData(int data) {
swp = data;
}
中的data又是另一个局部变量,和scopeDemo中的不是同一个变量!!!
接着methodDemo.getData()所得到的是MethodDemo 的成员变化swp>10当然输出10了;
紧接着setData方法把swp设置为100,再getData后输出swp>100
结果 hello 10 100
接分 闪人
----------------------------------------------------
Quietly through .....