1、声明位置
1.成员变量:在类中声明
2.局部变量:在方法中声明,形式参数也属于局部变量
public class Test {
//成员变量
int i = 5;
String classname;
public void print(String name) {//name形式参数,也属于局部变量
//局部变量
int j = 5;
for(int n = 1; n < 5; n++) {//n也是属于局部变量
}
}
}
2、初始值不同
1.成员变量:在没有赋值时,成员变量有默认初始值,数据类型不同,则默认初始值不同
2.局部变量:没有默认初始值,必须先声明,再赋值,再使用
public class Test {
//成员变量
int i = 5;
public void print() {
//局部变量
int j;
System.out.println("i:" + i);
System.out.println("j:" + j);
}
public static void main(String[] args) {
print();
}
}
3.当成员变量 int i = 5,局部变量未赋值时
4.当成员变量 int = i 未赋值,局部变量 int j = 6时
5.成员变量的类型为 int 时,有默认值为0
6.局部变量只有当赋值时,才能够使用
3、成员变量可以与局部变量同名
1.在同一个类中,成员变量的名称可以与局部变量的名称相同,但是局部变量的名称优先,就近优先
public class Test {
//成员变量
int i = 5;
public void print() {
//局部变量
int i = 6;
System.out.println("i:" + i);
}
public static void main(String[] args) {
Test test01 = new Test();
test01.print();
}
}
结果为:
输出的结果为局部变量的值
2.如何在成员变量与局部变量同名时,获取成员变量的值
可参考:
public class Test {
//成员变量
int i = 5;
public void print() {
//局部变量
int i = 6;
System.out.println("局部变量i:" + i);
System.out.println("成员变量i:" + this.i);
}
public static void main(String[] args) {
Test test01 = new Test();
test01.print();
}
}
使用 this 指针结果为:
this:表示当前这个对象,也就是说当前谁调用这个方法则这个对象就是谁
使用格式:this.
3.this:表示当前这个对象,也就是说当前谁调用这个方法则这个对象就是谁(例)
public class Test {
//成员变量
int i = 5;
public void print() {
//局部变量
int i = 6;
System.out.println("局部变量i:" + i);
System.out.println("成员变量i:" + this.i);
}
public static void main(String[] args) {
//创建第一个对象
System.out.println("第一个对象");
Test test01 = new Test();
test01.print();
System.out.println("分界线--------------------------");
//创建第二个对象
System.out.println("第二个对象");
Test test02 = new Test();
test02.i = 10;
test02.print();
}
}
结果为:
4、总结
1.声明位置不同
1)成员变量:在类中声明
2)局部变量:在方法中声明,形式参数也属于局部变量
2.初始值不同
1)成员变量:在没有赋值的情况下,成员变量有默认初始值,数据类型不同,则默认初始值不同
先声明,再赋值,再使用
3.在同一个类中,成员变量的名字可以与局部变量的名字相同,但是局部变量的名字优先,就近优先
this.
this 代表当前这个对象,也就是说谁调用这个方法则这个对象就是谁(看上述例)