企业网站建设公司 末路,南充网站建设天赐,县市区没有建设信用网站和平台,诸城网站建设0536sjava类中局部变量和成员变量有啥区别#xff1f;
举个例子#xff0c;我们可以定义一个Person类#xff0c;其中有两个成员变量name和age#xff0c;以及一个构造方法和一个show方法。在构造方法中#xff0c;我们可以使用this关键字来引用成员变量#xff0c;以区分同名…java类中局部变量和成员变量有啥区别
举个例子我们可以定义一个Person类其中有两个成员变量name和age以及一个构造方法和一个show方法。在构造方法中我们可以使用this关键字来引用成员变量以区分同名的形式参数在show方法中我们可以定义一个局部变量message用来存储要输出的信息。代码如下
public class Person {//成员变量String name; //默认值为nullint age; //默认值为0//构造方法public Person(String name, int age) {//使用this关键字来引用成员变量this.name name;this.age age;}//show方法public void show() {//局部变量必须先赋值才能使用String message 我叫 name 今年 age 岁。;System.out.println(message);}
}我们可以创建一个Person对象并调用其show方法看看输出结果
public class Test {public static void main(String[] args) {//创建一个Person对象Person p new Person(张三, 18);//调用show方法p.show();}
}输出结果为 我叫张三今年18岁。
为什么“我叫” name “今年” age “岁。”; 可以使用成员变量name和age不需要加上this.name和this.age?
这是一个很好的问题。在Java中如果在方法中使用成员变量的名字而没有和局部变量或形式参数重名那么就可以直接使用成员变量的值不需要加上this关键字。这是因为Java会自动在方法中寻找与成员变量同名的变量如果没有找到就会默认使用this关键字来引用成员变量。这样可以简化代码的编写也可以避免一些错误。
例如在show方法中我们使用了name和age两个成员变量的名字而没有在方法中定义同名的局部变量或形式参数所以Java会自动认为我们是要使用this.name和this.age的值所以可以直接写成“我叫” name “今年” age “岁。”;。
但是如果在方法中有和成员变量同名的局部变量或形式参数那么就必须使用this关键字来区分否则Java会优先使用局部变量或形式参数的值而忽略成员变量的值。这样可能会导致一些逻辑错误或意外的结果。
例如如果我们在show方法中定义了一个局部变量name如下
public void show() {//局部变量和成员变量同名String name 李四;String message 我叫 name 今年 age 岁。;System.out.println(message);
}那么当我们调用show方法时输出结果就会变成
我叫李四今年18岁。
public void show() {//局部变量和成员变量同名String name 李四;//使用this关键字来引用成员变量String message 我叫 this.name 今年 age 岁。;System.out.println(message);
}这样当我们调用show方法时输出结果就会恢复正常
我叫张三今年18岁。