java 速描?
java 速描?回忆版.😂.
资料来源:
https://www.liaoxuefeng.com/wiki/1252599548343744
更新
1
20.03.14 大概无聊,速览一遍 java
导语
- 纯速览,只写自己有点遗忘的部分.
基础
java 的三个版本
- SE: 标准版
- EE: 拓展版,企业版,带 Spring 等.
- ME: 不用看.
一些名词
- jdk: jre + 编译工具等
- jre: jvm 虚拟机 + 运行环境.
变量有基本类型和引用类型,两者在传递入参时效果不同.
char 是基本类型,String是引用类型,引用类型的变量可以为 null.
数组元素可以是基本类型或引用类型.但数组本身是引用类型.
System.out.println() / print() / printf() ,printf()可以格式化输出,格式与 C 基本相同.
Scanner对象读取输入,scanner.nextLine() / nextInt() / nextDouble().
引用类型比较使用 equals(),注意空指针.
Arrays.toString() 可以快速将数组转为字符串.
Arrays.sort() 进行排序.
Arrays.deepToString() 打印多维数组.
面向对象
final:
- final修饰的方法可以阻止被覆写.
- final修饰的class可以阻止被继承.
- final修饰的field必须在创建对象时初始化,随后不可修改.
abstract:
- 抽象方法必须在抽象类.
- 不实现抽象方法,子类还是抽象类.
interface: 接口
- java8 以后可以有默认的实现.
- 抽象方法可以有 public protected 和 default 这些修饰符.
String
- 不可变对象
- .contains(“ll”): 搜索
- .substring(2, 4): 提取子串
- .replace(‘l’, ‘w’): 替换
- .replaceAll(“[\,\;\s]+”, “,”): 替换正则
- .join(“***”, arr): 拼接
- .valueOf(123): 类型转换,自动识别.
- 与 char[] 互转.
StringBuilder是 String 的可变版本.
- 可以一直 .append / .insert
装箱拆箱都是编译期自动进行,但有性能损失,应当尽量避免.
JavaBean是一种符合命名规范的class,通过getter和setter来定义属性(kt 的数据类)
Math类
- abs max min
- .pow(2,10): 2 的 10 次方
- .sqrt(2): 开方
- .exp(2): e 的平反
- .log(): 取 e 为底的对数
- .log10(): 取 10 为底的对数
- 三角函数/PI 等
Random 伪随机数.SecureRandom 真随机数.
反射
- 不再说了,前段时间填坑了.
泛型
- 在 kotlin 那里填坑了.
集合
Collection 是除 map 外的基类.
集合包括 list set 和 map.
list
- ArrayList: 内部数组实现
- LinkedList: 内部链表实现
- for each 遍历展开其实是 Iterable 的调用.
- 转成数组
- toArray(),极少使用.
- toArray(T[]),泛型不匹配报错,长度不匹配,过长填 null,过短截断.
- T[] toArray(IntFunction<T[]> generator),类似生成器.
- 数组转 List
- List.of(T…),返回的是一个只读 List.
map
- 同时遍历 key value ,
for (Map.Entry<String, Integer> entry : map.entrySet())
- key 为 enum 使用 EnumMap 没有空间的浪费.
- 需要 key 遍历时有序,使用 SortedMap(接口),常用 TreeMap(实现类).要求 key 必须严谨的实现 Comparable
- 同时遍历 key value ,
set:
- HashSet 无序,TreeSet 有序.
Queue: 先进先出(FIFO),避免添加 null.
- add()/offer(): 元素添加到队尾.
- remove()/poll(): 获取队首元素并删除.
- element()/peek(): 获取队首元素但不删除.
- PriorityQueue: 带优先级的队列.元素实现 Comparable 接口,值越小优先级越高.
Deque: 双端队列.
- 将元素添加到队尾或队首:addLast()/offerLast()/addFirst()/offerFirst()
- 从队首/队尾获取元素并删除:removeFirst()/pollFirst()/removeLast()/pollLast()
- 从队首/队尾获取元素但不删除:getFirst()/peekFirst()/getLast()/peekLast()
- 总是调用xxxFirst()/xxxLast()以便与Queue的方法区分开
- 避免把null添加到队列
Collections
- .sort: 排序
- .shuffle: 打乱排序