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. Android DialogFragment全屏

     在onCreate里面写入代码: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(saved ...

  2. SPOJ-Matrices with XOR property,暴力打表!

    Matrices with XOR property 应该先去看看这题的,补题的时候发现这题其实挺简单的.. 题意:n*m的格子用1-n*m的数去填,要求如果一个格子(i1,j1)与另外一个格子(i2 ...

  3. zabbix的安装(一)监控os资源:内存,cpu,io,负载,带宽

    一.Linux下开源监控系统简单介绍1)cacti:存储数据能力强,报警性能差2)nagios:报警性能差,存储数据仅有简单的一段可以判断是否在合理范围内的数据长度,储存在内存中.比如,连续采样数据存 ...

  4. tomcat在centos6+上的自启动脚本

    #!/bin/bash # # tomcat startup script for the Tomcat server # # chkconfig: 345 80 20 # description: ...

  5. Luogu【P2065】贪心的果农(DP)

    题目链接 几乎所有DP题目前本蒟蒻都没有思路.当然包括但不限于这道题.每次都是看了题解然后打的(等价于抄题解)很羞耻 这道题经思考发现,越靠前砍的果树长果子的能力一定越弱,如果长果子的能力一样弱就先把 ...

  6. [BZOJ2287]【POJ Challenge】消失之物(DP)

    传送门 f[i][j]表示前i个物品,容量为j的方案数c[i][j]表示不选第i个物品,容量为j的方案数两个数组都可以压缩到一维 那么f[i][j] = f[i - 1][j] + f[i - 1][ ...

  7. 刷题总结——选课(ssoj树形dp+记忆化搜索+多叉树转二叉树)

    题目: 题目描述 学校实行学分制.每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分.学校开设了 N(N<300)门的选修课程,每个学生可选课程的数量 M 是给定的.学生选修了这M门课 ...

  8. 【离散化树状数组】Nordic Collegiate Programming Contest G.Galactic Collegiate Programming Contest

    #include<bits/stdc++.h> using namespace std; typedef long long ll; int n,m; ; struct node { in ...

  9. Chrome中输入框默认样式移除

    Chrome中输入框默认样式移除 在chrome浏览器中会默认给页面上的输入框如input.textarea等渲染浏览器自带的边框效果 IE8中效果如下: Chrome中效果如下:   这在我们未给输 ...

  10. Android 网络通信之Socket

    Android 网络通信之Socket 应用软件的网络通信无非就是Socket和HTTP,其中Socket又可以用TCP和UDP,HTTP的话就衍生出很多方式,基础的HTTP GET和POST请求,然 ...