Java后端学习资源
Hyplus目录
1 常用类
| 官方文档 | 类/接口 | ||
|---|---|---|---|
| 常用基础类 | Object(Objects) · System · Scanner · BufferedReader · BigInteger · BigDecimal · Math · Random · File · 日期时间包 | ||
| 集合框架 | Collection | List Queue |
Vector · Stack ArrayList LinkedList PriorityQueue |
| Set | HashSet · LinkedHashSet TreeSet |
||
| Map | Hashtable · Properties HashMap · LinkedHashMap ConcurrentHashMap TreeMap |
||
| 集合工具类 | Arrays · Collections | ||
| 字符串 | String StringBuilder · StringBuffer |
||
1.1 集合框架
Java集合框架(Collection、Map)提供了一套性能优良、使用方便的接口和类。
java.util包官方文档:package java.util
- List
- 接口:
java.util.List<E> - 实现类:
java.util.ArrayList<E>:变长数组java.util.LinkedList<E>:双链表
- 常用方法:
boolean add(E e):在末尾添加一个元素E get(int index):获取指定位置的元素E set(int index, E e):修改指定位置的元素(返回旧元素)int size():获取长度(元素数)boolean isEmpty():判空void clear():清空
- 接口:
- 栈
- 类:
java.util.Stack<E> - 常用方法:
void push(E e):压入元素E pop():弹出并返回栈顶元素E peek():返回栈顶元素int size():获取长度boolean isEmpty():判空void clear():清空
- 类:
- 队列
- 接口:
java.util.Queue<E> - 实现类:
java.util.LinkedList<E>:双链表java.util.PriorityQueue<E>:优先队列,默认为小根堆- 大根堆:
new PriorityQueue<E>(Collections.reverseOrder())
- 常用方法:
boolean add(E e):在队尾添加一个元素E remove():删除并返回队头E peek():返回队头int size():获取长度boolean isEmpty():判空void clear():清空
- 接口:
- Set
- 接口:
java.util.Set<K> - 实现类:
java.util.HashSet<K>:哈希表java.util.TreeSet<K>:平衡树
- 常用方法:
boolean add(K key):添加元素(若已存在则无法添加,返回false)boolean contains(Object key):判断是否包含某个元素boolean remove(Object key):删除元素int size():获取长度boolean isEmpty():判空void clear():清空
- TreeSet特有方法:
K ceiling(K key):返回大于等于指定元素的最小元素,不存在则返回空K floor(K key):返回小于等于指定元素的最小元素,不存在则返回空K higher(K key):">"K lower(K key):"<"
- 接口:
- Map
- 接口:
java.util.Map<K, V> - 实现:
java.util.HashMap<K, V>:哈希表java.util.TreeMap<K, V>:平衡树
- 常用方法:
V put(K key, V value):添加关键字及其对应的值(返回空或被覆盖的旧值)V get(Object key):返回关键字对应的值,不存在则返回空V getOrDefault(Object key, V defaultValue):返回关键字对应的值,不存在则返回默认值boolean containsKey(Object key):判断是否包含关键字boolean remove(Object key):删除关键字int size():获取长度boolean isEmpty():判空void clear():清空Set<Map.Entry<K, V>> entrySet():获取Map中所有键值对的集合
- 键值对(
Map.Entry<K, V>)常用方法:K getKey():获取关键字V getValue():获取值
- TreeMap特有方法:
Map.Entry<K,V> ceilingEntry(K key):返回关键字大于等于指定关键字的最小元素,不存在则返回空Map.Entry<K,V> floorEntry(K key):返回关键字小于等于指定关键字的最小元素,不存在则返回空- ……
- 接口:
1.2 字符串类
字符串输入读取详见Java常用基础类总结——标准输入读取类。
String类内容不可改变。
初始化:
String str1 = "Hello World";
String str2 = str1;
String str3 = str1 + " Akira!";
String str4 = "Welcome to " + 2025;
String str5 = String.format("Welcome to %d", 2025); // 格式化字符串,参考printf()
String moneyStr = "123.45";
double money = Double.parseDouble(moneyStr); // 使用Xxx.parseXxx()解析字符串
常用API:
int length():返回长度char charAt(int index):获取指定位置字符int indexOf(char c):查找第一个匹配的字符,失败则返回-1int indexOf(String str):查找第一个匹配的字符串,返回首位的位置,失败则返回-1boolean equals(Object o):判断是否相等int compareTo(String str):比较两个字符串的字典序、长度,大、小、相等分别返回1、-1、0boolean startsWith(String str):判断是否以某字符串开头boolean endsWith(String str):判断是否以某字符串结尾String trim():去掉首尾的空白字符(空格与\n等)String toLowerCase():全部转为小写字符String toUpperCase():全部转为大写字符String replace(char oldChar, char newChar):替换字符String replace(String oldRegex, String newRegex):替换字符串,可以长度不同或为空。String substring(int beginIndex, int endIndex):返回[beginIndex, endIndex)上的子串String substring(int beginIndex):返回指定起始索引的子串toCharArray():将字符串转化为字符数组,使得可以for-each遍历
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
System.out.println(c);
}
for (char c : str.toCharArray()) {
System.out.println(c);
}
StringBuffer/StringBuilder
当需要对字符串进行频繁修改时,要用StringBuffer或StringBuilder类。这两个类的对象能够被多次修改,且不产生新的未使用对象,效率都比String高且节省内存。需要转回String时使用默认的toString()方法即可。
- StringBuffer:多线程数据量多使用。线程安全,同步,效率低。
- StringBuider:单线程数据量较多使用。线程不安全,不同步,效率高。(算法题中更常用)
初始化:
String str = "Hello";
StringBuilder sb = new StringBuilder(str);
常用API:
length()、charAt()、indexOf()、substring()同Stringvoid setCharAt(int index, char newChar):替换指定位置的字符为指定字符void append(String str):拼接字符串void reverse():翻转字符串
sb.append(" World!");
for (int i = 0; i < sb.length(); i++) {
sb.setCharAt(i, (char)(sb.charAt(i) + 1));
}
sb.reverse();
0 附:学习路线
- 阶段一:Java语法与思想

- 阶段二:数据库核心技术

- 阶段三:Web技术规范
- 建议一学

- 阶段四:后端工程化
- 到这里基本可以达到一般实习工作要求

- 阶段五:前端工程化
- 选学,有时间可以一试

- 阶段六:分布式核心&实战
- Docker必须掌握,对一些技术要有基本了解

- 阶段七:架构师核心
- 索引/慢SQL必学

- 阶段八:微服务架构项目落地
- 了解即可

《Java后端开发学习资源》有2条评论