Housekeeping
Unsafe programming is one of the major culprits that makes programming expensive
使用构造器确保初始化
初始化数据是一个相当重要但是常常容易忘记的事,但是作为一个程序员,你也不想跨过千山万水的Debug,最后与变量未初始化相遇吧。
鉴于以上情况,使用一个你自己创建的初始化类的方法,应该是每次创造对象时该做的。不过我真的很怕麻烦,要我编写一个构造方法还每次都用,这也许还行,但是要是有一个内心邪恶的人,使用什么奇奇怪怪的方法名,这无疑是一件痛苦的事,又或者这个方法名刚好占用了我想给其它方法取得名字(想方法名真的很痛苦),那又该怎么办呢?先别慌,让我们看看Java是怎么做的。
在Java中,构造器(也就说所谓的初始化方法)以类名为自己的名字,并且每次使用new创建对象的时候,都会自动调用这个方法!真的很cool。而且,如果你忘记或者故意不给这个构造方法写内容的话,Java会自己给它写一个默认的,这个方法不需要任何的参数列表,仅仅返回一个null,当然也可以自己写一个构造方法,书写的方式和其它方法差不多。
如果你想访问创建的这个对象的字段,可以使用this
,可以把它理解为要创建的实例对象的Reference。
方法的重载
重载方法简单来说并不简单,但是也并不很难。一种通俗易懂的说法就是:一个名字的方法展现出了不同的作用。
print(123);
print("123");
比如上述代码中的print
方法,第一个的作用是打印123这个整形,第二个的作用是打印"123"这个字符串。
这时肯定会有靓仔提问了,它们都是一个名字,编译器怎么知道我要用哪一种???大家可能已经发现了,答案就藏在这段代码中,传入方法的参数不同!编译器会根据你传入的参数类型、个数来判断你使用的是什么。
也就是说,在定义方法的时候,你对多个同名的方法定义了不同,可以是返回类型,可以是内容,也可以是参数列表,但是编译器区分它们的最终方式是参数列表。
这也延伸出一个很有意思的东西,其实方法的重载它就是在写不同的方法,只是它们名字一样,就像在世界上可能总有一个和你名字一样的人,但是你们不是同一个人对吧。所有在一个方法中完全可以调用另一个已经写好的,注意是已经写好的,独立于这个方法的,和它同名的方法。这件事可以帮你更进一步的理解方法的重载
在书写构造方法的时候,也可以调用另一个构造方法作为内容的一部分
垃圾回收器
Java中有一个强大的垃圾回收机制,你几乎不需要自己手动的进行垃圾回收,当一个对象一直不被使用的时候,Java的垃圾回收器就会将它回收。但是我们坚信,垃圾回收是一件有代价的事情,所以为了尽力减小这个代价带来的消耗,垃圾回收期遵从的原则是,能不回收我就不回收,这应该也能解释为什么Java会占用大量内存吧。