1、如果一个包装类和一个基本类型比较大小,或者是两个基本类型进行比较大小,直接用==就好; 
如果是两个包装类进行比较大小,那么使用equals(),返回值是true,false,或者使用Xxx.compare(),返回值是1,0,-1。(这里的equals()方法,已经被包装类重写过了,不是Object的equals()) 
2、==和equals方法的区别 
当使用==来判断两个变量是否想等时,比较的是栈内存中的值,如果两个变量是基本类型变量,且都是数值类型,那么栈内存中个存放的是基本类型变量的值,所以只要两个基本类型变量的值想等,就会返回true。但对于两个引用类型变量,由于栈内存中存放的是变量的引用,所以只有当这两个引用类型变量指向同一个对象是,==才会返回true。==不可用于比较类型上没有父子关系的两个对象。 
equals()方法是Object类的一个实例方法,但这个方法和==没区别。不过String类和基本类型的包装类重写了这个equals()方法,不再比较引用对象的引用地址,而是比较所引用的值。 
3、类成员 
static 关键字修饰的成员是类成员,有类变量、类方法、静态初始化块三部分,static关键字不能修饰构造器。static修饰的类成员属于整个类。除了这三个,类中还可以包括构造器和内部类(包括接口、枚举),内部类可以用static修饰。 
null对象可以访问它所属类的类成员。 
对static关键字而言:类成员(包括方法、初始化块、内部类和枚举类)不能访问实例成员(包括成员变量、方法、初始化块、内部类和枚举类)。因为类成员的作用域是属于类的,类成员的作用域比实例成员的作用域更大,完全可能出现类成员已经初始化完成,但实例成员还不曾初始化的情况,如果允许类成员访问实例成员,将会引起大量错误。

4、final修饰符 
final修饰的变量获得初始值后不能被重新赋值,因此final修饰成员变量和修饰局部变量时,是有区别的。 
final成员变量: 
与普通成员变量不同的是,final修饰的成员变量必须由程序员显示的初始化,系统不会对final成员进行隐式初始化。 
final修饰的类变量在声明时或静态初始化块中指定初始值。 
final修饰的实例变量,在声明时或非静态初始化块中或构造器中指定初始值;

final局部变量: 
系统不会对局部变量进行初始化,局部变量必须由程序员显示初始化。因此使用final修饰局部变量时,既可以在定义时指定默认值,也可以不指定默认值。如果final 修饰的局部变量在定义时没指定默认值,则可以在后面的代码中对该fianl变量赋初始值,但只能一次,不能重复赋值。

final修饰基本类型变量和修饰引用类型变量的区别: 
当使用final修饰基本类型变量时,不能对基本类型变量重新赋值,因此基本类型变量不能被改变。但对于引用类型变量而言,它保存的仅仅是一个引用,final只保证这个引用类型变量所引用的地址不变,即一直引用同一个对象(使用final修饰的引用类型变量不能被重新赋值),但这个对象完全额可以发生改变(即可以改变引用类型变量所引用对象的内容)。

final方法 
final修饰的方法不可被重写。如果不希望子类重写某个方法,可以使用final修饰该方法。

final类 
final类不可以有子类(不可被继承)。

不可变类 
使用private和final修饰符类修饰该类的成员变量。 
提供带参数构造器 
不提供setter方法 
如果有必要,重写Objcet类的hashCode()和equals()方法。

缓存不可变类的实例 
如果程序经常需要使用相同的不可变类实例,则应该考虑缓存者在不可变类的实例。毕竟重复创建相同的对象没有太大的意义,而且加大系统开销。 
缓存是软件设计中一个非常有用的模式,缓存的实现方式有很多种,不同的实现方式可能存在较大的性能差别。但是,盲目乱用缓存也会导致系统性能下降,缓存的对象会占用系统内存,所以缓存一个重复使用概率不大的实例,就弊大于利。

5、抽象类 
abstract 修饰的方法必须重写才有意义,所以abstract不能和private 或 final一起使用. 
6、接口 
接口里不能保护普通方法,接口里所有的方法都是抽象方法 ;java8对接口进行了改进,允许在接口中定义默认方法,默认方法可以提供方法实现. 

接口是从多个相似类中抽象出来的规范,接口不提供任何实现.接口体现的是规范和实现分离的哲学. 
接口通常是定义多一组公用方法. 
接口完全支持多继承,一个接口可以直接继承多个父接口,但接口只能继承接口,不能继承类. 
一个类可以实现多个接口,如果一个类实现了多个接口,那么这个类的对象就可以直接赋值给多个父类变量,这就是Java提供的模拟多继承.

由于接口定义的是一种规范,因此接口里不能包含构造器和初始化块定义.接口里可以包含成员变量(只能是静态常量),方法(只能是抽象实例方法,类方法(1.8),或默认方法(1.8)),内部类(包括内部接口,枚举)定义. 
系统自动为接口里的成员变量添加public static final修饰符. 
所以接口里定义int MAX = 50;和定义 public static final int MAX = 50;的意义是一样的.

7、内部类

 
 

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】-NO.16.EBook.4.Java.1.005-【疯狂Java讲义第3版 李刚】- 枚举

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.005-[疯狂Java讲义第3版 李刚]- 枚举 Style:EBook Series:Java Si ...

  9. 【Java】-NO.16.EBook.4.Java.1.007-【疯狂Java讲义第3版 李刚】- Java基础类

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.007-[疯狂Java讲义第3版 李刚]-  Java基础类 Style:EBook Series:J ...

  10. 【Java】-NO.16.EBook.4.Java.1.008-【疯狂Java讲义第3版 李刚】- 集合/容器

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.008-[疯狂Java讲义第3版 李刚]- 集合 Style:EBook Series:Java Si ...

随机推荐

  1. 使用Apriori算法进行关联分析

    关联分析是一种在大规模数据集中寻找有趣关系的任务.这些关系可以有两种形式:频繁项集或者关联规则.频繁项集是指经常出现在一块的物品的集合,关联规则暗示两种物品之间可能存在很强的关系.一个项集的支持度被定 ...

  2. BZOJ 1197: [HNOI2006]花仙子的魔法【DP】

    Description 相传,在天地初成的远古时代,世界上只有一种叫做“元”的花.接下来,出 现了一位拥有魔法的花仙子,她能给花附加属性,从此,“元”便不断变异,产生了大千世界千奇百怪的各种各样的花. ...

  3. 【容斥】HDU 4135 Co-prime

    acm.hdu.edu.cn/showproblem.php?pid=4135 [题意] 询问[a,b]中与n互质的数有多少个 [思路] 考虑[1,m]中与n互质的数有多少个,答案就是query(b) ...

  4. 征途(bzoj 4518)

    Description Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地.除第m天外,每一天晚上Pine都必须在休息站过夜 ...

  5. Biorhythms(poj 1006)

    Description 人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为23天.28天和33天.每一个周期中有一天是高峰.在高峰这天,人会在相应的方面表现出色.例如,智力周期的高峰 ...

  6. R语言入门---杂记(一)---R的常用函数

    1.nchar():查看字符串长度. 2.rev(): 给你的数据翻个个 3.sort():给你数据排个序(默认从小到大依次排列) 4.runif():产生均匀分布的随机数 #runif

  7. ci框架——文章查看之上篇下篇

    1:从数据库查询出推荐的文章的信息,循环查出每篇推荐文章的id和title; foreach($data as $val){ $dataid[]=$val->aid; $datatitle[]= ...

  8. Linux 下 GCC 编译共享库控制导出函数的方法

    通过一些实际项目的开发,发现这样一个现象,在 Windows 下可以通过指定 __declspec(dllexport) 定义来控制 DLL(动态链接库)中哪些函数可以导出,暴露给其他程序链接使用,哪 ...

  9. delphi 与 sqlite3

      delphi与sqlite file:0 前言 本文的目的在于采用流水账方式来记录学习delphi访问嵌入式数据库sqlite中的一些点滴.欢迎各位同好共同学习和批评指正. file:1 准备工作 ...

  10. Vim出现:_arguments:450: _vim_files: function definition file not found的问题解决

    安装了zsh之后使用vim出现如下错误: arguments:450: _vim_files: function definition file not found _arguments:450: _ ...