成员变量与局部变量区别
声明位置不同
成员变量:在类中声明
局部变量:在方法中声明,其中形参也属于局部变量
初始值不同
成员变量:在没有赋值时,是有默认值的,数据类型不同,默认值不同
局部变量:没有默认值,也就是说必须先声明,然后再赋值,最后才可以使用
在同一个类中,成员变量的名字可以与局部变量的名字同名,但是局部变量名字优先,也就是就近优先,如果非要访问成员变量则必须添加this.
this代表当前这个对象,也就是 当前谁调用这个方法则这个对象就是谁 看图: 如图,this代表的就是c
局部变量与成员变量在内存中是如何显示的:
code:
1 /* 2 编写车类,属性:颜色、品牌、价格 3 编写车的测试类,创建车的对象 4 */ 5 class Car{ 6 //属性也叫做成员变量 7 String color; 8 String brand; 9 double price; 10 11 //方法 12 public void print(String name){ //name是形参 13 int i; //i就是局部变量 14 15 for(int j=1;j<=5;j++){ //j也属于局部变量 16 17 } 18 } 19 public void show(){ 20 int a; //a是局部变量 21 //System.out.println("a = " + a); //出现编译错误,原因:局部变量必须先声明,再赋值最后才可以使用 22 23 a = 123; 24 System.out.println("a = " + a); 25 System.out.println("price = " + price); //0 26 } 27 public void print2(){ 28 /*总结:在同一个类中,成员变量的名字可以与局部变量的名字同名 29 但是局部变量名字优先,也就是就近优先 30 如果非要访问成员变量则必须添加this. 31 */ 32 String color = "灰色"; //color是局部变量 33 System.out.println("输出局部变量color的值:"+ color); 34 System.out.println("输出成员变量color的值:"+ this.color); //this代表当前这个对象,也就是 当前谁调用这个方法则这个对象就是谁 35 } 36 } 37 //编写车的测试类 38 class CarTest{ 39 public static void main(String[ ]args){ 40 //实例化车 41 Car c = new Car(); 42 //c.show( ); 43 c.print2(); 44 45 System.out.println(); 46 Car c2 = new Car(); 47 c2.color = "白色"; 48 c2.print2(); 49 } 50 }