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 */