另注意:在下面这种情况下,不使用this.虽然不会出现问题,但最好加上this.关键字,以免产生混淆,同时也容易给阅读带来歧义。import java.util.Scanner;
class Student{
public String[] name = new String[5];
//下面这块代码写的时候无this.关键字,导致程序出错,在bccn论坛中求得出现该问题的原因
public void addName(String name){ //添加姓名
for(int i=0; i<this.name.length; i++){ //this.name代表当前对象(类)中的成员变量或方法
if(this.name[i] == null){ // 如此该循环语句中的this.全部去掉,会出现编译出错
this.name[i] = name; //无this关键字时,编译器会将形参name当作数组,导致出错
break;
}
/* 如果以上出现的类成员name为字符串而非字符串数组的话:
public void addName(String name){
name = name; //这就不会出现问题,编译器会将前一个name当作this.name来处理
*/
}
}
public void showName(){ //输出所有姓名
for(int i=0; i<name.length; i++)
System.out.print(name[i]+" ");
}
}
public class TestAdd{
public static void main(String[] args){
Student st = new Student();
Scanner input = new Scanner(System.in);
System.out.println("请输入五个学生姓名:");
for(int i=0; i<5; i++){
String newName = input.next();
st.addName(newName);
}
st.showName();
}
}
/*--------------------
请输入五个学生姓名:
11
33
44
88
99
11 33 44 88 99
--------------------*/
Public Class Student{
String name; //定义一个成员变量name
public void SetName(String name){ //定义一个形参(局部变量)name
this.name=name; //将局部变量的值传递给成员变量
}
}