1.类创建对象的详细过程
创建完成,dog就成了一个实例(对象),具有属性和方法
Dog类的属性:一般叫做成员变量
Dog类的方法:一般叫做成员方法
类是对象的抽象,对象是类的具体实例。
2.JAVA的数据类型
3.JAVA对象的生命周期和垃圾自动回收机制
注意什么叫做垃圾,rect为空后,不能进行引用属性和方法,对象就成了垃圾,
此时不能引用否则会报空指针异常。
①也可以手动,把某个实例对象赋值为空,然后再用System.gc()人为干预清理垃圾,节省资源。
②一般自定义的类,全部都默认继承Object类,每一个自己定义的类都有finalize方法,每次释放都会执行,如果想要看到finalize的效果可以在类中重写,可用source菜单中的override重写,
如图
当不动手写System.gc时,主线程没有任何任务,整体也全部被回收(这个地方不够细致以后再补充)。
4.成员变量与局部变量
①作用域
成员变量:可以放在一个类的成员方法后面,和成员方法没有先后,都是先编译成员变量。
局部变量:就是方法范围,且顺序不能调,先声明后使用。
②初始值
成员变量:一创建对象就会赋初始值。
局部变量:如果没赋值,直接用是非法的
③隐藏
局部和成员重名时,局部变量会覆盖成员变量,如果要加以区分就用this
如图
test方法是在方法中新定义a的成员方法,但a已经是成员变量,
如果这时候在主方法中直接打印a则局部覆盖成员变量。
如果这时非要打印成员变量,就用this加以区分,this代表当前对象。
④赋值
对于成员变量来说,属性可以不赋值,那么创建对象时就是默认值,但是属性也可以赋值,那么一创建对象,就赋值完成了。
⑤分类
实例变量:用类创建的对象,对象拥有的属性就是该实例的变量,用 变量名.属性即可引用,一般创建实例的时候才会产生。
类变量:类中用static修饰的属性,可以用类.属性应用,也可用变量名.属性引用,所有该类的变量都可引用该变量,一般在类生成字节码的时候就会定义赋值,比实例要早,在静态方法中可以直接使用静态变量,去掉属性前面的引用,而实例变量必须用变量名.属性引用。
5.构造方法
6.成员方法
注意两点:返回值也可以是对象,传入参数也可以是对象,是一种地址传递。
以上是对于不定长参数的定义方法,一个是单一不定长,一个是最后一个参数是不定长参数,相当于传进去一个数组。
具体使用如下
3,4都给了多参数变量,最后的数组也是给了多参数变量,熟悉这种用法,不定长参数不能放到最后。
7.成员方法的值传递和引用传递
8.方法的重载
9.(静态)类方法和实例方法的区别
静态方法和变量优先分配空间,实例方法和变量因此可以调用他们,反过来则不行。
10.关于static的用法
静态成员使用注意事项
注意分配空间时间是不同的。
注意类字节码一有类就会加载,但是实例的方法和变量,只有创建时才会出现。
11.对象的组合关系
就是一个类中去定义另一个类作为了成员变量。
12.package和import关键字
注意import是不能引用无名包中的类的,而且包名不存在包含关系,必须要严格区分,上下级也要导入包。
13.访问修饰符(可修饰类,成员变量or方法)
虽然类中的成员变量可以用private隐藏,但是也可以通过公开的方法来使用该值,这样就增强了安全性。
14.类和对象关键字_abstract、final、this
抽象类不一定含有抽象方法,也可能含有普通方法,或者没有方法,即如果里面有抽象方法,类前一定用abstract修饰,但用abstract修饰的类中怎么写,没有要求,继承后要么实现全部的抽象方法,要么把子类也变成抽象类。
this带参数,一个构造函数调用另一个构造函数的方式如下
第一个构造方法调用第二个构造方法,且this(1,1)必须放在第一条。