《java中局部变量和成员变量的区别》

 1 class Car 
 2 {
 3     String color;
 4     int number;
 5 
 6     void run()
 7     {
 8         System.out.println(color+"::"+number);
 9     }
10 }
11 
12 class CarDemo
13 {
14     public static void main(String[] agrs)
15     {
16         Car c = new Car();//c是类类型的变量。
17         //c.color = "blue";
18         //c.number = 4;
19         c.run();
20     }
21 }
22 
23 /*
24 类与对象的关系:
25 类:对事物的描述。需要体现属性和行为。
26 对象:该类事物创建的示例(实体),通过该对象调用具有的属性和行为。
27 
28 成员变量和局部变量的区别:
29 区别一:定义的位置不同。
30         (1)成员变量定义在类中。
31         (2)局部变量定义在方法中。
32 
33 区别二:在内存中的位置不同。
34         (1)成员变量存储在堆内存的对象中。
35         (2)局部变量存储在栈内存的方法中。
36 
37 区别三:声明周期不同:
38         (1)成员变量随着对象的出现而出现,随着对象的消失而消失。
39 
40     对区别三第(1)条的解释说明:
41     class Car
42     {
43         //事物的属性:
44         String color;
45         int number;
46 
47         //事物行为:
48         void run()
49         {
50             System.out.println(color+"::"+number);
51         }
52 
53         /*
54         说明:这个run方法运行的时候,调用的不是Car这个类里面定义的那个
55               color和number,而是内存中的堆内存中的对象的color和number。
56         */
57     }
58     class CarDemo
59     {
60         public static void main(String[] agrs)
61         {
62             Car c = new Car();
63             c.color = "red";
64             c.number = 4;
65             c.run();
66         }
67     }
68         (2)局部变量是随着方法的运行而出现,随着方法的弹栈而消失。
69 
70 区别四:初始化不同:
71         (1)成员变量因为在堆内存中,所以有默认的初始化值。
72         (2)局部变量没有默认初始化值,必须初始化后才可以使用。
73     /*
74     有一个问题是:Java为什么不把局部变量也初始化呢?
75         原因是一旦Java把局部变量也初始化了,此时局部变量
76         就在内存中占据空间了。Java的机制是什么时候用到了
77         局部变量,什么时候再在内存中为局部变量开辟空间。
78 
79         //如果写成如下:则当run方法进栈后,会在内存中为局部变量
80         //x开辟空间。
81         void show()
82         {
83             int x = 4;
84         }
85 
86         //如果写成如下:则当run方法进栈后,不会在内存中为局部变量
87         //x开辟空间。
88         void show()
89         {
90             int x;
91         }
92     */
93     
94 */
原文地址:https://www.cnblogs.com/sun-/p/5313191.html