Java编程思想(5,6)

第五章 初始化与清理

1.Java中,通过构造器,类的设计者可确保每个对象都会得到初始化。 无参数的构造器 ,默认构造器Apple apple=new Apple();

有参数的构造器:Apple apple=new Apple(c)

2.构造器的命名:构造器采用与类相同的名称

3.方法重载:重载的方法,方法名相同,每个重载的方法都必须有一个独一无二的参数类型列表。根据方法的返回值区分重载方法是行不通的。

4.基本类型的重载:

 a.如果传入的数据类型(实际参数类型)小于方法中声明的形式参数类型,实际数据类型就会被提升。

 b.如果传入的实际参数较大,就得通过类型转换来执行窄化转换。

5.默认构造器:由编译器自动创建的无参默认构造器。如果已经定义了一个构造器(无论是否有参数),编译器就不会帮你自动创建默认构造器。

6.this关键字:只能在方法内部使用。this 指“这个对象”或者“当前对象”

 a.返回对当前对象的引用  return this; 

 b.将当前对象传递给其他方法。a(this)

 c.在构造器中调用构造器:this(a),this.s=s(当前对象的属性值赋值)

7.static方法的内部不能调用非静态方法。

8.终极清理与垃圾回收:Java的垃圾回收器负责回收无用对象占据的内存资源(只知道释放经由new分配的内存),Java允许在类中定义一个名为finalize()的方法进行特殊内存的清理非对象(一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用此方法,并且在垃圾回收动作发生时,才会真正回收对象占用的内存)。垃圾回收本身是有一定的开销,所以内存消耗没有到快用完的程度程序很少使用垃圾回收。

垃圾回收器:会负责释放对象占据的所有内存。

finalize():通过某种创建对象方式以外的方式为对象分配了存储空间。

9.用户如果决定清理一个对象,必须在需要清理的时刻调用执行清理动作的方法。

10.记住,无论“垃圾回收”还是“终结”,都不保证一定会发生。如果虚拟机并未面临内存耗尽的情形,它是不会浪费时间去执     行垃圾回收以恢复内存的。Syystem.gc():用于强制进行终结动作。如果程序中含有finalize(),在调用Syystem.gc()之前会主动     调用finalize() 。

11.垃圾回收器工作i:

a.引用计数:是一种简单但速度很慢的垃圾回收技术。每个对象都含有一个引用计数器,每增加一个对象引用,计数器就加1,每减少一个对象引用,计数器就减1。直到为0,进行释放对象所占的内存。弊端:如果对象之间存在循环引用,可能出现“对象应该被回收,但是计数却不为0”。

b.自适应的垃圾回收技术:思想是:对任何“活”的对象,一定能最终追溯到其存活在堆栈和静态存储区之中的引用。下面两种方式来回切换~~~

如何处理找到的存活对象,取决于不同的Java虚拟机实现。

停止-复制:先暂停程序,然后将存活的对象全部复制到另一个堆,没有被复制的对象全部都是垃圾,被复制的对象排列一个接一个,这样剩余的内存空间也是连续非断裂的,便于为下一个对象进行快速的分配空间。被搬移的对象需要修改地址的引用,指向新的地址。

标记-清扫:从堆栈和静态存储区出发,遍历所有的引用,进而找出所有存活的对象。每找到一个存活的对象就进行标记,待标记完毕,清理动作才开始。没有标记的对象将被释放,不会发生任何复制动作。剩下空间是不连续的。

12.成员初始化:在定义基本类型时,没有进行初始化,系统会进行自动初始化,数字类型:0,字符类型:[ ],boolean:false,对象:null。

13.初始化顺序:变量定义的先后顺序决定了初始化的顺序。所有的变量的初始化会在调用构造器之前进行全部初始化。静态变量只初始化一次,静态块也只初始化一次。

14.数组初始化:int[ ] a; int a[ ];数组计数 0—length-1 

15.可变参数列表:methodname(object ... args ),methodname(int ... args )。。。。。

16.枚举类型:命名惯例:大写字母。枚举类型的相关方法:ordinal( ) 用来表示某个特定enum常量的声明顺序,values( )用来按照enum常量的声明顺序,产生由这些常量值构成的数组。

public enum Spiciness {
NOT,MILD,MEDIUM,HOT,FLAMING
}


第六章:访问权限控制

1.包访问权限:默认访问权限没有任何关键字。当前的包中的所有其他类对那个成员都有访问权限,但对于包之外的所有类,这     个成员却是private。

2.public :随便访问,只要是当前成员调用即可。

3.private:只能包含该成员的类进行访问。

4.protected:只能有继承该成员类的子类进行访问。(基类的创建者希望某个特定成员,把对它的访问权限赋予派生类而不是所  有类。)






 

发布了20 篇原创文章 · 获赞 9 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览