Java后端学习资源
初学者教程:菜鸟教程
Maven官方仓库:https://mvnrepository.com
官方文档 | 类/接口 | ||
---|---|---|---|
常用基础类 | 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 |
Hyplus目录
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)
:返回关键字小于等于指定关键字的最小元素,不存在则返回空- ……
- 接口:
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)
:查找第一个匹配的字符,失败则返回-1
int indexOf(String str)
:查找第一个匹配的字符串,返回首位的位置,失败则返回-1
boolean equals(Object o)
:判断是否相等int compareTo(String str)
:比较两个字符串的字典序、长度,大、小、相等分别返回1
、-1
、0
boolean 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条评论