thinking in java 学习笔记5 初始化与清理
第五章 初始化与清理
?
今天是清明长假的第一天,看了自己的博客,人很少,呵呵,我想这和我第一次发布应用的情况也是一样的,但是我相信这一点随着自己的深入研究,自然会多起来,就我个人而言,第五章是这本书有趣的开始,有很多知识是我之前没有去碰过的,当然这些基础知识也相当重要,这让我想起了自己当时去面试,连很多基础的问题都不懂得回答,哎,所以说基础还是非常重要的.
?
好吧,看看今天有什么内容
?
?
?
.不安全编程
在许多c程序员忘记初始化变量,或者在使用程序库后,不记得清理,导致了元素占用一直没有释放,所以资源耗尽,导致程序出错,在java这边,很好的解决了这两个问题,而这一章书也是围绕着这两个点说的 初始化 ?清理
?
?
?
?
.构造器
构造器的名字,若命名为普通方法名,容易与正常方法冲突,又因为构造器是编译器的责任,故构造器的名字与类名同名(c++也是这样),若编译器探测到程序内无显式构造器,则会提供一个默认构造器,也就是无参构造器,对于java而言,创建与初始化是捆绑在一起的, ? 注:构造器无返回值
?
?
.方法重载
为什么需要方法重载,这样说一下程序,我记得我上软件工程选修课的时候,老师说过一句挺经典的话,程序是真实世界的反应,它不能真正帮你解决什么问题....我现在是有点感悟了,重载的意思在人类语言来说就是一个词表示多重含义,
比如看电视,看电脑,看书,重载了看这个方法,传入的参数类型不同而已,
区别重载方法的技巧,其实很简单,看他的方法签名就好了,方法签名就是方法名加参数列表(类型顺序不同,方法也不同,但是不建议这么做),thats all,有些人可能会问,返回值类型不同也可以区分啊,但是有时候你在调用有返回值的方法,但是你不需要它的返回值,例如 ?hello(); 你能判别这个方法是有返回值还是木有吗,呵呵,所以说以返回值判断是不行的,记得private void shit()和public void shit()这两个不是方法重载,会出错的...
?
?
.this关键字
这个this,作者是这样引出来的,a.peel(1),b.peel(2),对于这两个对象调用peel方法,怎么知道是哪个对象调用呢,其实编译器做了一些幕后工作,就是将该对象的引用作为第一参数传入到方法 故a.peel(a,1)
?
那么this是什么,我个人的平时用法就是this就是当前对象的引用,书上是这么说的,在方法内部获得对当前对象的引用,若在同一个类的方法内调用其他方法,可以不写this,this会自动应用
?
this应用的地方,1.引用成员变量,例如x.name;可以写成this.name
2.在构造器中调用构造器constructor(){this(“hello”);} 且必须写在第一句 注:在构造器外不能调用构造器,this不能用于两个构造器
3.返回对象的值,可以用 return this;
注:静态方法内不能用this
?
?
.static
statci 方法内部不能调用非静态方法(对象引用的例外)与变量,非静态方法可以调用static方法与变量
?
?
.清理 垃圾回收器
这是一块比较大得内容,在下面的引用网络那里会详细研究
?
?
.初始化
我觉得是这一章最难懂的,
1.成员初始化
局部变量必须初始化,类变量可以不用(系统自动初始化)
?
2.构造器初始化
先初始化变量,在初始化构造器,java编译器为了安全起见
?
3.静态数据的初始化
static不能用于局部变量,这是真的,的确会出错
static数据最先初始化
?
.显示的静态初始化:后于变量,前于方法
1.static{}首次访问类的静态成员或方法,都会触动到static静态块的调用
2.首次生成类的对象时会调用,要注意是首次
?
.数组初始化
例如int【】 a
数组是一个对象
length属性,这是数组的固有成员,java数组内置边界检查,性能降低,但是安全性大大提高
Java中数组下标从0开始
在创建数组时,允许使用变量作为数组长度
Autoboxing:对于一个包装类类型的数组,可以直接对每个元素赋值上相应的基本数据类型
?
?
.可变参数列表
就是传说中的String... str应用于参数个数或者类型未知的场合
?