重新打一遍基础,查漏补缺
字符串
1 | package com.xiaoyuyu.stringTest; |
类概念
requireNonNull
一个没接触过的方法
1 | package com.xiaoyuyu.classTest; |
访问权限
初始化块/静态代码块
1 | package com.xiaoyuyu.classTest; |
文档注释
平时注释写的不好,需要看一下
继承
多态常犯的错误
1 | package com.xiaoyuyu.classTest; |
final
1.final关键字修饰类体现在该类不能被继承
2.final关键字修饰成员方法体现在该方法不能被重写但可以被继承。
3.final关键字修饰成员变量体现在该变量必须初始化且不能改变。
参数数量可变
没想到发现一个小tips,我以为java是不允许人为制造可变参的函数
1 | package com.xiaoyuyu.classTest; |
枚举类
1 | package com.xiaoyuyu.classTest; |
反射
public 和 private的所有属性和方法都是可以获取的,区别就是要不要加Declared
1 | /** |
接口
解决默认方法冲突
实现两个接口时,指定调用的是哪个接口的方法即可
1 | package com.xiaoyuyu.interfaceTest; |
这里之所以要加super的原因很难解释,但是如果不加super,那么显然这个方法需要时一个静态的方法,加了super,可以表示这个方法来自已识别的超级的方法。
如果是同事继承类,并实现了一个接口,则有冲突的方法自动使用类的,这就是类优先规则
lambda表达式
以下是lambda表达式的重要特征:
- 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
- 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
- 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
- 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值。
1 | (int a, int b) -> { return a * b; }; |
函数式接口
对于只有一个抽象方法的接口,需要这种借口的对象时,就可以提供一个lambda表达式。这种接口称为函数式接口。
可能是我水平不够,我个人觉得scala里面使用函数式编程我可以接受,java我还是不习惯。
异常、断言、日志
异常分类
在java中,异常对象都是派生于Throwable类的一个类实例,但在下一层,分解为两个分支:Error,Exception。
Error的话除了通知用户,退出程序,无能为力。Exception又可以分解为:IOException和RuntimeException。
主要还是try catch finally
断言
断言机制允许在测试期间向代码插入一些检查,而在生产代码中会自动删除这些检查。
1 | assert condition; |
这两个语句都会计算条件,如果结果为false,则抛出一个AssertionErroe异常。在第二个语句中,表达式将传入AssertionError对象的构造器,并转换成一个消息字符串。
日志
基本日志
1 | Logger.getGlobal().info("a log"); |
高级日志
一个专业的应用程序中,肯定不能把所有日志都记录到一个全局日志记录器中,可以定义自己的日志记录器。
1 | private static final Logger myLogger = Logger.getLogger("com.xiaoyuyu.myAPP"); |
泛型程序设计
泛型方法
1 | package com.xiaoyuyu.genericTest; |
还有一些不合法的操作
1 | 参数:Class<T> cl |
不能再静态字段或者方法中引用类型变量
1 | private static t singleInstance; // ERROR |
即不能抛出也不能捕获泛型类的对象
1 | catch (T e) // ERROR |
通配符<? extends T> 和 <? super T>
这问题可太经典了,白菜继承了蔬菜类,装着白菜的盘子不是装着蔬菜的盘子的子类。
1 | package wildcardCharacter; |
并发
每个进程都拥有自己的一整套变量,而线程则共享数据,共享变量使得线程之间的通信比进程之间的通信更有效。
常见的一些基础在这里就不记录了,主要是翻书的时候查漏补缺时记下的。
本文链接: http://woaixiaoyuyu.github.io/2021/10/17/java%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF(%E5%8D%B7%E4%B8%80)%E7%AC%94%E8%AE%B0/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!