首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Thinking In Java 学习札记(三)

2013-03-13 
Thinking In Java 学习笔记(三)接本系列上篇。1 基础复习摘要2.1 Finalize()使用该函数只在垃圾回收器就要

Thinking In Java 学习笔记(三)

       接本系列上篇。

1 基础复习摘要

2.1 Finalize()使用

该函数只在垃圾回收器就要释放空间时,才会调用的。因此不能等同于C++的析构函数。

Finalize中进行的清除工作,主要是对非java方法分配内存进行清除。因此,finalize一般不需要使用。

2.2 垃圾回收器

1)垃圾回收器如何工作

引用级数方式。引用到某个对象时,该引用技术就加1;而当引用离开其作用域或置为null时,则减1。垃圾回收器会在包含所有已经创建对象的列表上遍历,一旦发现某个对象的引用是0时,则释放其占用的空间。

非基于引用计数的回收方式。依据的思想就是,任何“活”的对象,一定能追述到其存活的堆栈或是静态存储区中的引用。

2.3 静态初始化

类中的静态代码块,例如下面,

Thinking In Java 学习札记(三)

2.4 数组初始化

1)数组赋值

数值可以直接赋值给另外一个数组。但是需要注意的是,其实是复制引用过去而已。如下代码块,

public static void main(String[] args) {

// TODO Auto-generated method stub

int num1[] = {1,2,3,4};

int num2[] = num1;

for(int i = 0;i < num1.length;i++)

num2[i] ++;

for(int j = 0;j < num1.length;j++)

System.out.println("num2 "+num2[j]);

for(int k = 0;k < num2.length;k++)

System.out.println("num1 "+num1[k]);

}

输出为:

num2 2

num2 3

num2 4

num2 5

num1 2

num1 3

num1 4

num1 5

2.5 访问控制

1)Private使得类不被访问

若要使一个类不被访问,可以将该类的构造函数设为private。

2)包访问控制

若未指定类的访问控制,则默认是包访问控制权限。包访问控制权限指的是,该类可以被包内其他类访问,包的定义类似如下。

Package com.src.test;

若没定义包,则默认定义此文件路径下的上一级文件夹为包。

2.6 组合与继承

1)基类重载

对于基类的重载,java不对基类的重载函数进行覆盖,而C++则会进行覆盖。如下代码。

Thinking In Java 学习札记(三)

Thinking In Java 学习札记(三)

Thinking In Java 学习札记(三)

2)final类不允许有子类

2.7 多态

1)private方法不能被继承

Private方法默认是final,不能被继承。

2)关于抽象类生成的对象

Thinking In Java 学习札记(三)

3)构造器调用顺序

Thinking In Java 学习札记(三)

4)编写构造器的原则

如下代码,其结果可能不是符合预期。

Thinking In Java 学习札记(三)

Thinking In Java 学习札记(三)

用尽可能少的方法使得对象进入正常的状态,如果可以的话,避免调用其他方法。在构造器中唯一能够安全调用的方法是基类中的final方法(也适用于private方法,他们自动属于final方法)。这些方法不能被重载,因此也就不会出现以上令人惊讶的现象。

4)用继承进行设计

 用继承表达行为间的差异,并用属性表达状态上的变化。

 

热点排行