Section 1:Declaration And Access Control
1 ,在数组的声明语句中不能指定元素的个数
2,数组的索引下标为int型,short,byte,char可以自动转为int型,long型导致编译错误
3,JAVA不支持多维数组,但支持数组的数组
4,重写方法不能有更严格的访问权限
5,注意native, transient,synchronized,volitile等modifiers.
6,在构造函数中可用this(argument)调用该类中其它的重载构造函数
7,super(this),this(argument)要放在构造函数的第一句
8,创建对象的顺序:
1:静态变量初始化;
2:执行静态初始化,如果有多个静态初始化块,则按照编写的次序来执行;
3:执行构造函数的头部,无论显式的隐式的this() or super() called;
4:执行显式的实例变量的初始化及实例化初始化块;
5:执行剩下的构造函数中的代码
---------------------------------------------------------------------------------------------------------------------
Section 2:Flow Control Assertions,And Exception Handling
1,switch (a){case b:....}a可以为byte,short,char,int(可自动转化为int) ;b为常量表达式,编译时要知道值
2,编译器会根据a的数据类型check b 的值 byte b,case 200//compiler error because 200 out of range of byte
3,try/catch代码块中,在声明catch代码块的参数类型时应先声明子类然后声明父类,不能顺序颠倒
4,重写的方法将不能抛出在父类中没有检测的异常
---------------------------------------------------------------------------------------------------------------------
Section 3:Language fundamentals
1,在文件中至多有一个为被声明为public,且类名与文件名一样
2,在文件中不一定必有public 类,在没有public类时,文件名应与类名不一致
3,接口中所有方法都隐含public和abstract修饰符(不能是static和其它的修饰符),所有变量都隐含static,public,final修辞符(不能是transient和volatile)
---------------------------------------------------------------------------------------------------------------------
Section 6:Overloading,Overwriting,RuntimeType,And Object Orientation
1,Variable is resolved at compile time,Method is resolved at run time,Static method is resolved at compile time。
2,方法的调用是依赖于对象的类型而不是引用的类型,所以不可能在子类中调用父类的父类的方法,但可以利用this的引用类型沿着继承向上访问父类的父类的的变量。eg.(grandparent)(this).variable
3,Method of private modifier is can't be extended.also can't be overwritted and overridden
---------------------------------------------------------------------------------------------------------------------
关于gc()
无用对象完整的判断规则是:沿着对象的引用的被包含关系追溯不到根对象或活动线程时,则这个对象被称为无用对象。
gc()的意义是“唤醒”垃圾回收线程,相当于对垃圾收集线程调用了notify()函数,但不一定会执行。垃圾回收线程只有两种情况可以由
JVM调用:系统在运行过程中处于空闲状态和内存资源使用不足。
在JAVA中分为代码区,数据区,堆区,栈区,
垃圾回收只能管理的内存区域仅限于堆区。内存区域分配详细说明:JAVA很类似c/c++中的内存管理
一个对象的存在形式分成了两个部:引用和引用指向的内存块。引用在函数中声明,占有的空间在函数运行的栈区开辟,依赖于函数是否在栈中运行;引用指向的内存块由 垃圾回收机制处理。
关于多态的调用:
1,编译
根据对象的引用类型所在的类中是否定义了这个成员而确定编译是否正确。如果在引用类型所对应的类中,定义了该类,correct,否则compile error。还可以扩展为:如果在该引用类型所对应的类中没有这个成员,而在其父类中定义了同名的成员,则编译正确。如果在该引用类型所对应的类中没有定义这个成员,而在子类中定义了同名成员,compile error,即父类不能引用子类中追加的成员。
2,运行
调用成员变量时,将调用引用类型所对应的类中的成员变量,如果该类中没有定义该变量,而父类中定义了同名成员变量,那么将调用父类中的同名变量。调用函数时,将根据对象的运行时类型来确定调用那个成员函数,运行时类型量那个类的类型,那么就调用那个类中定义的成员函数。若类中没有定义则在父类寻找
构造函数执行的规律:
1;构造函数的执行总是向上调用的,而且总是先执行完父类的构造函数,然后才能执行子类推构造函数。
2;在构造函数中,没有this(argument)语句则有super(argument)语句(if hidden,system auto insert super() to here)。
3;显式的构造函数总是先于构造函数语句。
---------------------------------------------------------------------------------------------------------------------
MouseListener,KeyListener,WindowListener have Event Adapter.
SCJP 要点记录
最新推荐文章于 2021-06-16 02:51:01 发布