1.类里面的方法,不加static的话,该方法就是该类的成员方法,如果加了static关键字的话,该方法就是一个静态的方法,它不属于任何对象。
2.构造函数(与类名相同,不能有返回类型,void也不行)
public Person(){
//这个构造函数定不定义都一样,没有的话编译器在编译时会自动创建一个,但是如果我们自己定义了带参数的构造函数的时候,编译器就不会为我们自动产生一个不带参数的构造函数了。
}
构造方法--在一创建该类对象就调用 可以给类成员变量进行初始化工作
与类的名字相同的就是构造方法,构造方法可以重载。
重载构造方法可以完成不同的初始化操作。在Person p=new Person("Tom",18);这条语句中,会做这么几件事情:首先创建指定类的新实例对象;在堆内存中为实例对象分配内存空间,并调用指定类的构造方法(在调用这个构造方法之前,堆区对象对应的内容为自动初始化的内容name=null,age=0);最后将实例对象的首地址赋值给引用变量p。
3.this关键字
提出疑问:我现在有一个对象a1,a1调用了他的function1方法,那我们能不能调用当初调用function1方法的那个对象呢?(有些拗口了)那么该怎么表示?难道是a1.function2()么? 我们的类是事先写好的,function1的定义是先于a1对象的创建的,所以就要用到this关键字,this.function2(),this在这个地方的意思就是指的调用function1的这个对象。
每个成员方法内部,都有一个this应用变量,可以指向调用这个方法的对象。
可以用于一个构造方法调用另一个构造方法,直接this();想调那个构造方法就在括号里写对应的参数。
当成员变量与局部变量重名的时候,有了this,就可以写成 this.name=name;前一个name是成员变量的name,后面的name是传进来的name。这样的话,代码就有了良好的可理解性,一看到这两个变量就知道它们是有相关性的。
4.垃圾回收机制
java中的finalize()方法,在对象被当做垃圾,并且回收之前系统自动调用该方法,注意是在回收之前;System.gc能马上把系统中的垃圾回收释放掉,在释放掉之前我们可以看到finalize方法被调用(在finalize()方法里面syso一句话)。
Never expect. Never assume. Never ask. And never demand. Just let it be. If it's meant to be, it will happen.