java笔记重点

码点:字符数

代码单元:一个字符可能占两个单元   length()返回的是代码单元个数

代码块里面不能声明和实例变量或者类变量相同名的变量(局部变量)

switch 可以是 char byte int short string enum

带标签break跳出多重循环    标签名:循环{循环{break;}}//跳这里

依赖:a的方法操作b

聚合:a的对象包含b

关联:一个类知道另一个类的属性和方法

局部变量不会自动初始化,空对象不能调用方法null

构造器与类同名 一个以上 参数可有可无没有返回值 伴随new一起调用

用final可以告诉编译器该方法为内联方法(节约了入栈出栈时间,直接用方法体替换方法的地址)

直接返回一个对象的引用会破坏封装,应该返回一个克隆对象  obj.clone()

使用静态方法(1.不需要类的状态,参数通过显式参数提供,2.只需要访问类的静态域)

java所有方法  按值传值!!!!不能修改基本数据类型 不能修改引用指向另外的一个对象

重载  方法签名不同即可  方法名 参数列表

初始化块  所有数据域初始化为默认值,按照类声明出现顺序执行域初始化语句和初始化块 执行构造器

静态初始化块 类第一次加载和实例域一样除非设置成其他值,否则默认,按类定义顺序执行

finalize方法 会在对象被回收之前调用,调用时间不确定

静态导入, import static java.lang.System.*    以下代码中可以直接用System类的静态方法和静态域

当前类  同一包  子孙  其他包

作用域      当前类     同一package    子孙类       其他package 

public       √          √           √            √ 

protected    √         √            √            × 

friendly     √         √            ×            × 

private     √         ×            ×             ×


继承:子类继承父类,子类有父类的私有域,但是不能直接访问,只能通过父类的方法或者接口访问,利用super.方法  调用。同理子类构造器只能初始化子类的私有域,对继承的私有域只能通过父类的构造器来初始化,没有显式调用,则调用无参构造器

this 调用隐式参数  调用该类其他构造器

动态绑定:多态,多态不能调用子类新有的方法

重载构析:动态识别,不同签名的同名方法

静态绑定:方法标记为private,static,final或者是构造器,则直接执行该方法,不用动态识别

重写:子类覆盖的方法不能低于父类的可见性。

含有抽象方法,类一定抽象

数组tostring要用 Arrays.tostring(数组)打印  deeptostring()


enum Size{
SMALL(“S”)
SIZE(string s){

this.abbreviation=s;
}
private string abbreviation;
}
仅在枚举构造枚举常量的时候调用构造器




反射modifyer类分析修饰符


接口   常量  静态方法 默认方法default(同名父类优先,若两个接口的冲突,则子类必须重写,没有默认实现,则不存在冲突)


super.clone() 需要实现cloneable接口浅克隆  深克隆需要重新定义public才能允许所有方法克隆对象。



函数式接口 

λ表达式(一个闭包)

(String str,...)->{      }   没有参数也需要空括号。

除非可以推导出参数的类型,那么参数类型可以不写

例如:Comparator<String> c =(f,fs)->f.length-fs.length;

如果只有一个参数,并且参数类型可以推导出来 可以省略小括号

ActionListener listener =e->sout(“。。。”);

表达式要么有返回值要么没有,不能在某个分支有而其他地方没有。

表达式可以引用外部函数的传值,只能引用值不会改变的变量,另外,如果在表达式中引用变量,变量在外部改变也不合法,局部变量不同名,拉姆达表达式this表示该方法的引用



方法引用  System.out::println 等价于 x->sout(x)  this /super::instanceMethod也可以

构造器引用 

类名::new.       int[]::new.  等价于 x->new int[x]




p q代表int long double PQ代表Int Long Double



内部类

对其他类隐藏 编写回调函数方便   只有内部类可以为private 常规类具有包可见或公共可见

静态域必须是final

不能有static方法

可以为static,没有外围类的引用特权


局部内部类

不能用public或者private声明 可以访问由final修饰的局部变量


匿名内部类没有类名,所以没有构造器,可以把参数传递给父类的构造器



猜你喜欢

转载自blog.csdn.net/qmylzx/article/details/80918888