1.类创建对象的详细过程

清空 new的对象 Java java清空对象属性的方法_开发语言

创建完成,dog就成了一个实例(对象),具有属性和方法

Dog类的属性:一般叫做成员变量

Dog类的方法:一般叫做成员方法

类是对象的抽象,对象是类的具体实例。

2.JAVA的数据类型

清空 new的对象 Java java清空对象属性的方法_jvm_02

3.JAVA对象的生命周期和垃圾自动回收机制

清空 new的对象 Java java清空对象属性的方法_jvm_03

注意什么叫做垃圾,rect为空后,不能进行引用属性和方法,对象就成了垃圾,

此时不能引用否则会报空指针异常。

清空 new的对象 Java java清空对象属性的方法_开发语言_04

①也可以手动,把某个实例对象赋值为空,然后再用System.gc()人为干预清理垃圾,节省资源。

②一般自定义的类,全部都默认继承Object类,每一个自己定义的类都有finalize方法,每次释放都会执行,如果想要看到finalize的效果可以在类中重写,可用source菜单中的override重写,

如图

 

清空 new的对象 Java java清空对象属性的方法_java_05

清空 new的对象 Java java清空对象属性的方法_开发语言_06

 

清空 new的对象 Java java清空对象属性的方法_成员变量_07

当不动手写System.gc时,主线程没有任何任务就是程序执行完毕,整体也全部被回收(这个地方不够细致以后再补充)。

 

清空 new的对象 Java java清空对象属性的方法_成员变量_08

这里在程序结束后aa也会被回收。

 4.成员变量与局部变量

清空 new的对象 Java java清空对象属性的方法_开发语言_09

①作用域 

成员变量:可以放在一个类的成员方法后面,和成员方法没有先后,都是先编译成员变量。

局部变量:就是方法范围,且顺序不能调,先声明后使用。

②初始值

成员变量:一创建对象就会赋初始值。

局部变量:如果没赋值,直接用是非法的

③隐藏

局部和成员重名时,局部变量会覆盖成员变量,如果要加以区分就用this

如图

清空 new的对象 Java java清空对象属性的方法_jvm_10

 test方法是在方法中新定义a的成员方法,但a已经是成员变量,

如果这时候在主方法中直接打印a则局部覆盖成员变量。

如果这时非要打印成员变量,就用this加以区分,this代表当前对象。

④赋值

对于成员变量来说,属性可以不赋值,那么创建对象时就是默认值,但是属性也可以赋值,那么一创建对象,就赋值完成了。

⑤分类

实例变量:用类创建的对象,对象拥有的属性就是该实例的变量,用 变量名.属性即可引用,一般创建实例的时候才会产生。

类变量:类中用static修饰的属性,可以用类.属性应用,也可用变量名.属性引用,所有该类的变量都可引用该变量,一般在类生成字节码的时候就会定义赋值,比实例要早,在静态方法中可以直接使用静态变量,去掉属性前面的引用,而实例变量必须用变量名.属性引用。

5.构造方法

清空 new的对象 Java java清空对象属性的方法_成员变量_11

 

清空 new的对象 Java java清空对象属性的方法_开发语言_12

 

清空 new的对象 Java java清空对象属性的方法_jvm_13

6.成员方法

清空 new的对象 Java java清空对象属性的方法_成员变量_14

注意两点:返回值也可以是对象,传入参数也可以是对象,是一种地址传递。

清空 new的对象 Java java清空对象属性的方法_开发语言_15

 以上是对于不定长参数的定义方法,一个是单一不定长,一个是最后一个参数是不定长参数,相当于传进去一个数组。

具体使用如下

清空 new的对象 Java java清空对象属性的方法_清空 new的对象 Java_16

 3,4都给了多参数变量,最后的数组也是给了多参数变量,熟悉这种用法,不定长参数不能放到最后。

7.成员方法的值传递和引用传递

清空 new的对象 Java java清空对象属性的方法_java_17

 8.方法的重载

清空 new的对象 Java java清空对象属性的方法_清空 new的对象 Java_18

9.(静态)类方法和实例方法的区别

 

清空 new的对象 Java java清空对象属性的方法_开发语言_19

静态方法和变量优先分配空间,实例方法和变量因此可以调用他们,反过来则不行。

10.关于static的用法

清空 new的对象 Java java清空对象属性的方法_成员变量_20

清空 new的对象 Java java清空对象属性的方法_jvm_21

 静态成员使用注意事项

清空 new的对象 Java java清空对象属性的方法_成员变量_22

 注意分配空间时间是不同的。

清空 new的对象 Java java清空对象属性的方法_成员变量_23

注意类字节码一有类就会加载,但是实例的方法和变量,只有创建时才会出现。

 11.对象的组合关系

清空 new的对象 Java java清空对象属性的方法_清空 new的对象 Java_24

就是一个类中去定义另一个类作为了成员变量。

12.package和import关键字

清空 new的对象 Java java清空对象属性的方法_成员变量_25

清空 new的对象 Java java清空对象属性的方法_成员变量_26

清空 new的对象 Java java清空对象属性的方法_开发语言_27

注意import是不能引用无名包中的类的,而且包名不存在包含关系,必须要严格区分,上下级也要导入包。

13.访问修饰符(可修饰类,成员变量or方法)

清空 new的对象 Java java清空对象属性的方法_java_28

 

清空 new的对象 Java java清空对象属性的方法_jvm_29

 虽然类中的成员变量可以用private隐藏,但是也可以通过公开的方法来使用该值,这样就增强了安全性。

14.类和对象关键字_abstract、final、this

清空 new的对象 Java java清空对象属性的方法_成员变量_30

 抽象类不一定含有抽象方法,也可能含有普通方法,或者没有方法,即如果里面有抽象方法,类前一定用abstract修饰,但用abstract修饰的类中怎么写,没有要求,继承后要么实现全部的抽象方法,要么把子类也变成抽象类。

清空 new的对象 Java java清空对象属性的方法_jvm_31

 

清空 new的对象 Java java清空对象属性的方法_成员变量_32

 this带参数,一个构造函数调用另一个构造函数的方式如下

清空 new的对象 Java java清空对象属性的方法_java_33

 第一个构造方法调用第二个构造方法,且this(1,1)必须放在第一条。