Core java for impatient 笔记
Posted joeylee97
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Core java for impatient 笔记相关的知识,希望对你有一定的参考价值。
类比c++来学习!
1.在java 中变量不持有对象,变量持有的是对象的引用,可以把变量看做c++中的只能指针,自动管理内存
需要手动初始化(否则就是空指针!)
2.final 相当于c++中的const
java中的嵌套类:
1.静态嵌套类:
类可以获取静态嵌套类中变量和方法的使用权
2.内部类
内部类的方法可以访问它的外部类的实例变量。在这种情况下,它们是外部类的实例变量!
静态嵌套类和内部类的不同之处在与每个内部类对象都有自己外部类对象的引用。
在调用外部类方法的时候实际调用的是 outer.f()
解释内部类的外部类引用的时候,将其称为outer
接口是一种特殊的类,可以可做java对于行为的抽象!接口的默认定义是static和final的变量,可以有默认的实现方法!
继承接口的类必须实现接口的方法!并且将接口的方法声明为public!
在接口的默认方法和父类的方法发生冲突对的时候优先选择父类方法
java中常用的接口
Comparable接口
Comparator接口
Runnable接口,产生一个没有返回值的函数
lambda表达式是一块代码,可以将这一部分作为定义的方法或者对象传递出去。
lambda表达式方法中的this代表的是创建lambda表达式的方法的this参数
经常需要在lambda中访问来自闭合方法或者类的变量:
当lambda定义的行为在线程中调用的时候,引用的变量可能已经不存在了。。。怎么办?
lambda表达式有三个部分:1.代码块2.参数3.自由变量的值(既不是参数变量也不是内部定义的变量)
lambda的表达式必须在数据结构中存储这些值!
就是说这些值已经被lambda表达式捕获了(为了确保被捕获的值是良好定义的,在lambda中你只能引用那些值不会改变的变量,final变量)
可以定义局部类然后返回构造函数,相当于实现简单工厂设计模式。。
子类可以使用关键字super来调用父类的方法或者构造函数。
final方法不能被覆盖,final类不能被继承!
.
java中所有类都是object的子类,提供了toString,hash,Clone,equals等方法。
class加载了java类型的信息,包括类,数组,接口,基本类型
反射库可以让程序在运行过程中访问类的成员,变量和方法!
在向下转换的时候,安全的方法是使用instanceof检测,然后再用强制类型转换方法转换!
抽象方法和类:对某一个对象的特定行为的抽象和对某一类对象的抽象!
当你在子类中定义equals方法的时候首先要调用父类的equals方法,因为当父类的检查都没有通过的时候,对象必定不相等!
自带的clone()在处理引用的引用时是浅拷贝,如果需要深拷贝自己定义。
在处理静态成员的时候要当选新他们的构造次序,由于枚举常量在静态成员之前构建,所以你不能再构造函数里引用任何静态成员。
以上是关于Core java for impatient 笔记的主要内容,如果未能解决你的问题,请参考以下文章
Java SE 8 for the Really Impatient读书笔记——Java 8 Lambda表达式