成员变量与局部变量区别

成员变量与局部变量区别

  声明位置不同

    成员变量:在类中声明

    局部变量:在方法中声明,其中形参也属于局部变量

  初始值不同

    成员变量:在没有赋值时,是有默认值的,数据类型不同,默认值不同

    局部变量:没有默认值,也就是说必须先声明,然后再赋值,最后才可以使用

  

  在同一个类中,成员变量的名字可以与局部变量的名字同名,但是局部变量名字优先,也就是就近优先,如果非要访问成员变量则必须添加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 }
原文地址:https://www.cnblogs.com/penphy/p/10911516.html