03_2_JAVA中的面向对象与内存解析

03_2_JAVA中的面向对象与内存解析

1. 成员变量

成员变量可以是Java语言中任何一种数据类型(包括基本数据类型和引用数据类型)

在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的初始值。

如下列表:

成员变量类型

取值

byte

0

short

0

int

0

long

0L

char

‘\u0000’

float

0.0F

double

0.0D

boolean

false

所有引用类型

null

成员变量的作用范围为整个类体。

2. 引用

Java语言中除基本类型之外的变量类型都称之为引用类型。

Java中的对象是通过引用个对其操作的。

3. 如何在内存中区分类和对象

类是静态的概念,代码区

对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量)而方法只有一份,执行的时候才占用内存。

4. 对象的创建和使用

必须使用new关键字创建对象。

使用对象(引用).成员变量或来引用对象的成员变量。

使用对象(引用).方法(参数列表)来调用对象的方法。

同一类的每个对象有不同的成员变量存储空间。

同一类的每个对象共享该类的方法。

5. 构造方法(构造函数)

使用new + 构造方法创建一个新的对象。

构造函数是定义在Java类中的一个用来初始化对象的函数。

构造函数与类同名且没有返回值。

例如:

public class Person {

int id;

int age;

Person(int n, int i) {

id = n;

age = i;

}

}

当没有指定构造函数时,编译器为类自动添加形如

类名() {} 的构造函数。

6. 约定俗成的命名规则

类名的首字母大写

变量名和方法名的首字母小写

运用驼峰标识

7. 调用过程演示

Test test = new Test();

int date = 9;

BirthDate d1 = new BirthDate(7,7,1970);

BirthDate d2 = new BirthDate(1,1,2000);

test.change1(date);

test.change2(d1);

test.change3(d2);

......

public void change1(int i) {

i = 1234;

}

public void change2(BirthDate b) {

b = new BirthDate(22, 2, 2004);

}

public void change3(BirthDate b) {

b.setDay(22);

}

 

1

 

 

2 date9传给形参i i = 9

 

 

3 i 被设置为 1234

 

 

4 方法change1调用完毕之后,i值消失

 

 

5 调用change2 d1的值 传给 b

 

 

6 b d1 指向同一对象

 

 

7 b 并赋予新值 重新指向另一对象

 

 

8 方法change2调用完毕之后, b消失,以及对象也消失 (堆里面的对象,有可能不是马上消失,而是在垃圾回收的时候,消失。)

 

 

9 调用change3 b被传递为d2的值,而和d2指向同一对象

 

 

10 day被改成22

 

 

11 change3调用完毕 b消失

 

posted @ 2018-03-24 18:00  FlyBack  阅读(234)  评论(0编辑  收藏  举报