《疯狂笔记》1-6章关键点汇总

    入职一个月,二刷《java疯狂笔记》,深入的看了看,也彻底的吧GUI编程方面的知识给系统补了下,弥补了我自从两年前接触这门语言开始的一个“心愿”。下面是1到6章中,我认为比较重要的点,在此记录。哦对了,生活上的东西相当复杂,毕竟经历了一个人生大的转换时期,不多说,就一句:我有女朋友了,她英文名字叫Gloria,我非常高兴!
第一章到第六章的关键点:
1、源文件->字节码->机器码(javac编译成字节码,JVM再解释执行成机器码)
2、java虚拟机具体构成为:①指令集②寄存器③类文件的格式④栈⑤垃圾回收堆⑥存储区
3、环境变量的设置:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;Java1.5之后可以不用配置CLASSPATH
4、最新的垃圾回收机制摒弃了老的标记\清除垃圾回收器,用G1垃圾回收器代替
5、java不允许直接访问对象,而是通过对对象的引用来操作对象
6、以字节为单位,各个基本数据类型的大型:byte(1)、short(2)、char(2)、int(4)、long(8)、float(4)、double(8)、boolean(true、
false)
7、如果将一个较小的整数数值(在byte或者short类型的表数范围内)赋给一个byte或者short变量,系统会自动把这个整数值当成byte或者short类型来处理
8、如果使用一个巨大的整数数值(超出int类型的表数范围)时,java不会自动把这个整数当成long类型来处理。如果希望当成long应该在数字的后面加上l或者是L
9、java用16位的Unicode字符集作为编码方式。
10、Java语言默认的浮点类型为double类型
11、正无穷大通过Double或fFloat类的POSITIVE_INFINITY表示;负无穷大通过Double或FLOAT类的NEGATIVE_INFINITY表示,非数通过DOUBLE或者Float类的NaN表示
12、表数范围小的可以自动向表数范围大的进行类型转换
13、把任何基本类型的值和字符串值进行连接运算时,基本类型的值将自动类型转换成为字符串类型
14、java中将表数范围大的基本类型赋值到小的基本类型变量上面的时候,必须进行强制类型转换
15、直接量是指在程序中通过源代码直接给出的值,java中有八种直接量:P59
16、有关字符串的说明:当程序第一次使用某个字符串直接量时,java会使用常量池(constant pool)进行缓存该字符串直接量,如果程序后面部分需要用到该字符串直接量的时候,java会使用常量池中的字符串直接量
17、对于int类型的整数进行移位a>>b,当b>32时,系统先用b对32求余(因为int类型只有32位),得到的结果才是真正移位的位数。long类型为对64求余。a>>33和a>>1的结果完全一样,而a>>32的结果就是a
18、java 中右移运算有两个>>和>>>,,把第一个操作数的二进制码右移指定位数后,>>运算左边空出来的位置以原来的符号位进行填充;>>>运算左边空出来的位置以0进行填充
19、java面向对象的整个过程,注意 类对象和实例对象 的具体区分,static成员(函数、变量)都属于类对象,而非static的属于实例对象
20、方法重载就是:同一个类中方法名相同,参数列表不同,至于其他地方如方法返回值、修饰符等与方法重载没有任何关系
21、类的简易创建过程:第一次用类的时候进行类对象的创建,之后用到这个类的时候,都将使用这个创建了的对象,每次进行实例对象创建的时候,都是使用类对象,在堆上面创建一个新的实例对象。
22、控制访问权限 private  default  protected  public
              同一个类中             可以  可以  可以   可以
              同一个包中                      可以  可以   可以
              子类中                                      可以   可以
              全局范围内                                         可以
23、JDK1.5之后增加了一种静态导入的语法,它用于导入指定类的某个静态成员变量、方法或全部的静态成员变量、方法(import static)
24、构造器的细节解说:P139
25、方法的重写就是:方法名相同、形参列表相同,子类的返回值类型应该比父类的返回值类型更小或者是相等,子类方法声明抛出的异常类应该比父类方法声明抛出的异常类更小或者相等,子类方法的访问权限应该比父类的方法的访问权限更大或者相等。覆盖的方法和被覆盖的方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法
26、编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定
27、如果试图把一个父类实例转换成子类类型,则这个对象必须实际上是子类实例才行(即编译时类型为父类类型,而运行时类型是子类类型),否则将在运行时引发ClassCastException异常
28、初始化块只在创建java对象时隐式执行,而且在执行构造器之前执行
29、java创建一个对象时候,系统先为该对象的所有实例变量分配内存(前提是该类已经被加载过了),接着程序开始对这些实例变量执行初始化,其初始化顺序是:先执行初始化块或者声明实例变量时指定的初始值(这两个地方指定初始值的执行允许与他们在源代码中的排列顺序相同),再执行构造器里指定的初始值
30、静态初始化块是类相关的,用于对整个类进行初始化处理,通常用于对类变量执行初始化处理
31、整个系统将会对-128~127这之间的整数自动装箱成Integer实例,并放入一个名为cache的数组中缓存起来,以后只要用到整数自动装箱成Integer对象的时候,都会指向这个cache数组中的某一个位置
32、常量池专门用于管理编译时被确定并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口中的常量,还包括字符串常量
33、final修饰的成员变量必须由程序员显示的指定初始值。类变量:在静态初始化块、声明该变量时候指定初始值,而且只能在这两个地方之一指定;实例变量:必须在非静态初始化块、声明该实例变量或构造器中指定初始值,而且只能在这三个地方的其中之一指定。
34、如果初始化块已经为摸个实例变量指定了初始值,则不能再在构造器中为该实例变量指定初始值;final修饰的类变量,要么在定义该类变量的时候进行指定初始值,要么在静态初始化块中为该类变量指定初始值
35、宏变量的条件(就是变成了直接量,编译期直接进行替换)①使用final修饰符修饰,②在定义该final变量时指定了初始值,③该初始值可以再编译时就被确定下来
36、内部类相关:声明使用非静态与静态内部类P205~P207
37、枚举类P221
38、java有四种引用:强引用、软引用、弱引用、虚引用P230~P233

猜你喜欢

转载自2086420470.iteye.com/blog/2241127
1-6