1、初始化块总在构造器执行之前被调用 
2、静态初始化块用于初始化类,在类初始化阶段被执行 
3、如果继承树里的某个类要被初始化时,系统将会同时初始化该类的所有父类 
4、一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器(比如默认的构造器将失效) 
5、修饰类或者方法的修饰符,final和abstract 只能选择其一,final不可改变,abstract只能由后代实现 
6、一个字节长度为8位,char类型为2个字节,char类型使用单引号括起来,如果把一个0~65535范围内的int整数赋给char类型,系统会自动把这个int类型 当成char类型来对待。 
char t1=97;//可以赋予0到65535之间,输出相应字符,如果赋予65536,则报错。 
System.out.println(t1);//输出 a

char t2= 'a';
System.out.println(t2);//a
System.out.println((int)t2);//97 char t3='你';
System.out.println(t3);//你
System.out.println((int)t3);//20320

7、构造器不能声明返回值类型(包括void),如果声明了,那么编译不会报错,但是Java会把这个构造器当成一个方法来处理–它就不再是一个构造器。 
8、如果堆内存里的对象没有被任何栈内存中的引用所指向,那么将会被垃圾回收,所以想回收某个对象,将之赋值为null即可 
9、this 关键字总是指向调用该方法的对象,在构造器中引用该构造器正在初始化的对象,在方法中引用调用该方法的对象。 
10、方法重载:java允许同一个类里定义多个同名方法,只要形参列表不同就行。如果同一个类中包含了两个或两个以上方法的方法名相同,但形参列表不同,则被称为方法重载。 
11、在局部变量覆盖成员变量时,依然可以在方法中显示指定类名和this作为调用者来访问被覆盖的成员变量,这使得编程更加自由。不过大部分时候还是应该尽量避免这种重名的情形。 
12、栈内存中的变量无须系统垃圾回收,往往随方法或代码块的运行结束而结束,因此,局部变量的作用域是从初始化该变量开始,直到该方法或代码块运行完成而结束。局部变量只保存基本类型的值或者对象的引用。 
13、成员变量扩大了变量的生存时间,这将导致更大的内存开销。 
扩大了变量的作用域,这不利于提高程序的内聚性。 
14、缩小局部变量的作用范围,从而减少这个变量在内存里停留的时间,减小了内存开销,从而提高程序的运行性能。 
15、良好的封装,有两个方面: 
将对象的成员变量和实现细节隐藏起来,不允许外部直接访问。 
把方法暴露出来,让方法来控制对这些成员变量进行安全的访问和操作。 
16、符合javaBean规范的类:一个java类的每个实例变量都被使用private修饰,并为每个实例变量都提供了public修饰的setter和getter方法。 
17、java的常用包 
java.long:包含了java语言的核心类,如String,Math,System,Thread等,这个包无须手动导入 
java.util: 这个包下包含了java大量的工具类/接口和集合框架类/接口,如Arrays,List,Set等 
java.NET : java网络编程 
java.io: java输入/输出类 
java.text:java格式化相关的类 
java.sql: java进行jdbc数据库相关的类和接口 
java.awt:抽象窗口工具集, 
java.swing:Swing图形用户界面编程的相关类/接口 
18、java类必须包含一个或一个以上的构造器。当创建一个对象时,系统为这个对象的实例变量进行默认的初始化,这种初始化,把所有的数值类型的实例变量设为0,布尔类型的实例变量设为false,引用类型的实例变量设为null。 
19、如果一个类里提供了多个构造器,就形成了构造器的重载。使用this调用另一个重载的构造器只能在构造器中使用,而且必须作为构造器执行体的第一条语句。例如:this(“fale”); 
如果this的调用不放在第一行,eclipse会报错。原因不明。 
20、关于继承extends,子类扩展了父类,可以获得父类的全部成员变量和方法,但不能获得父类的构造器。 
java.lang.Object类是所有类的父类。 
21、子类包含与父类同名方法的现象被称为方法重写(override),要遵循:两同两大一小。即:方法名相同,形参列表相同;子类方法返回值类型应比父类方法的返回值类型更小或相等,子类方法声明抛出的异常类,应比父类方法声明抛出的异常类更小或相等;一大,指子类方法的访问权限应比父类方法的访问权限更大或相等。如果父类方法具有private权限,则子类无法访问和覆写。 
22、可以使用super(被覆盖的是实例方法)或者父类类名(被覆盖的是类方法,super不能调用父类的类方法或变量)作为调用者来调用父类中被覆盖的方法。 
23、如果在构造器中使用super,则super用于限定该构造器初始化的是该对象从父类继承得到的实例变量,而不是该类自己定义的实例变量。 
如果在某个方法中访问名为a的变量,但并没有显示指定调用者,那么系统查找a的顺序为: 
1)、该方法中是否有局部变量a 
2)、该类中是否有成员变量a 
3)、父类中是否有成员变量a,依次上朔所有父类,知道Object为止。 
24、子类不会获得父类的构造器,但子类构造器可以使用super调用父类构造器。但super调用也必须出现在构造器第一行,所以super和this不会同时出现。 
另外,不管是否使用super调用来执行父类构造器,子类构造器总会调用父类构造器一次。因为系统会在执行子类构造器前,隐式调用父类无参数的构造器,父类会先调用更父类的构造器,所以最先执行的总是java.lang.Object类的构造器。 
25、多态 
java引用变量有两个类型:一个是编译时类型,一个是运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现所谓的多态。 
当把一个子类的实例对象直接赋给父类引用变量时,这个引用变量的编译类型是父类,运行类型是子类,所以当运行时调用该引用变量的方法时,总是表现出子类的方法,于是:相同类型的变量,调用同一个方法时,呈现多种不同的行为特征,这就是多态。 
与方法不同的是,变量则不具有多态性,调用时依然是父类的变量值。 
引用变量在编译阶段只能调用其编译类型所具有的方法,但运行时则执行它运行时类型所具有法方法,因此,多态时,可通过反射来调用父类所不具有的子类法方法。

26、继承的坏处,破坏封装,相比之下,组合的封装性更好,但是代码繁琐。 
27、组合和继承的区别

 
 

java8--面向对象 上(疯狂java讲义3) 复习笔记的更多相关文章

  1. java8--集合(疯狂java讲义3复习笔记)

    1.集合分四类:set,map,list,queue 位于java.util包下. 集合类和数组的区别,数组可以保存基本类型的值或者是对象的引用,而集合里只能保存对象的引用. 集合类主要由两个接口派生 ...

  2. 《疯狂Java讲义》学习笔记——第2章 理解面向对象

    面向对象的三种基本特征:继承,封装,多态 UML(统一建模语言) 2.1 面向对象 2.1.1 结构化程序设计简介 图2.1  结构化软件的逻辑结构示意图 从图2.1可以看出,结构化设计需要采用自顶向 ...

  3. java8--类加载机制与反射(java疯狂讲义3复习笔记)

    本章重点介绍java.lang.reflect包下的接口和类 当程序使用某个类时,如果该类还没有被加载到内存中,那么系统会通过加载,连接,初始化三个步骤来对该类进行初始化. 类的加载时指将类的clas ...

  4. 《疯狂java讲义》笔记 1-5章

    1.编译语言和解释语言理解,摘自李刚老师的<疯狂Java讲义>第三版: 就是说,Java和.net都是编译型有事解释型语言.编译型就是根据不同平台编译成不同的可执行机器码,编译过程中会进行 ...

  5. 《疯狂java讲义》读后感

    <疯狂java讲义·第三版>,全书共851页,18章. 目录如下: 第1章 Java语言概述与开发环境 第2章 理解面向对象 第3章 数据类型和运算符 第4章 流程控制与数组 第5章 面向 ...

  6. 《疯狂Java讲义第4版》PDF+代码+课件 电子书pdf 分享

    <疯狂Java讲义(第4版)>是<疯狂Java讲义>的第4版,第4版保持了前3版系统.全面.讲解浅显.细致的特性,全面新增介绍了Java 9的新特性. <疯狂Java讲义 ...

  7. 0038 Java学习笔记-多线程-传统线程间通信、Condition、阻塞队列、《疯狂Java讲义 第三版》进程间通信示例代码存在的一个问题

    调用同步锁的wait().notify().notifyAll()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同 ...

  8. 《疯狂Java讲义》(一) ---- 关于学习Java的反思

    "听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...

  9. udp协议基础(转自疯狂java讲义)

    第17章  网络编程 17.4  基于UDP协议的网络编程 UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发 ...

  10. 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条

    http://blog.csdn.net/terryzero/article/details/3797782 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条 标签: swing编程 ...

随机推荐

  1. 网页QQ唤起

    网页QQ唤起 <html> <head> <meta http-equiv="Content-Type" content="text/htm ...

  2. oracle用户密码错误导致用户锁定

    解决方法:使用DBA用户将其解锁: SQL> alter user ecology account unlock; 用户已更改. 用户密码限制设置: 查看FAILED_LOGIN_ATTEMPT ...

  3. jQuery中文文档

    http://www.jquery123.com/ http://www.shifone.cc/

  4. 【Luogu】P1352没有上司的舞会(树形DP)

    题目链接 设f[i][0]表示第i个人不去舞会时子树的最大欢乐度,f[i][1]表示第i个人去舞会时子树的最大欢乐度. 则有状态转移方程:f[i][0]+=∑max(f[to][0],f[to][1] ...

  5. BZOJ 3196 二逼平衡树 ——树套树

    [题目分析] 全靠运气,卡空间. xjb试几次就过了. [代码] #include <cmath> #include <cstdio> #include <cstring ...

  6. 学习linux之 rwx对于目录和档案的意义(节选自鸟哥)

    權限對檔案的重要性 檔案是實際含有資料的地方,包括一般文字檔.資料庫內容檔.二進位可執行檔(binary program)等等. 因此,權限對於檔案來說,他的意義是這樣的: r (read):可讀取此 ...

  7. CKeditor如何实现图片上传功能

    http://makaiyuan.blog.51cto.com/5819595/1049521 如何在数据库中导入excel文件内的数据:http://jingyan.baidu.com/album/ ...

  8. PAT (Advanced Level) 1086. Tree Traversals Again (25)

    入栈顺序为先序遍历,出栈顺序为中序遍历. #include<cstdio> #include<cstring> #include<cmath> #include&l ...

  9. noip2015提高组day2解题报告

    1.跳石头 题目描述 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块岩石( ...

  10. 用systemtap来做系统性能分析和事件分析

    http://zhengheng.me/2015/02/11/systemtap-analy/