我在java中尝试一个简单的例子:
class student{
int id;
String name;
void stud(int id,String name){
id = id ;
name = name;
}
void display(){System.out.println(id+" "+name);}
public static void main(String args[]){
student s1 = new student();
s1.stud(1,"sss");
s1.display();
}
}
Run Code Online (Sandbox Code Playgroud)
它给了我一个o/p为0和null
以及以下程序:
class student{
int id;
String name;
void stud(int i,String n){
id = i ;
name = n;
}
void display(){System.out.println(id+" "+name);}
public static void main(String args[]){
student s1 = new student();
s1.stud(1,"sss");
s1.display();
}
}
Run Code Online (Sandbox Code Playgroud)
给我输出1 sss
为什么将形式参数更改为与类的成员变量不同的名称可以正常工作?
因为当你声明一个参数时
void stud(int id,String name)
Run Code Online (Sandbox Code Playgroud)
你隐藏(阴影)实例变量id.因此,无论何时id在方法中访问stud,它都将引用本地 id变量,而不是实例变量.
如果要访问实例变量,请使用以下this关键字:
void stud(int id,String name) {
this.id = id;
// ...
}
Run Code Online (Sandbox Code Playgroud)
this.id将引用实例变量,同时id引用参数(local).
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |