⬆︎
×

Java后端开发学习资源

Java后端学习资源

初学者教程:菜鸟教程

Maven官方仓库:https://mvnrepository.com

Java实用库简介
官方文档 类/接口
常用基础类 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

  1. 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():清空
  2. 队列
    • 接口: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():清空
  3. 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):"<"
  4. 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-10
  • 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

当需要对字符串进行频繁修改时,要用StringBufferStringBuilder类。这两个类的对象能够被多次修改,且不产生新的未使用对象,效率都比String高且节省内存。需要转回String时使用默认的toString()方法即可。

  • StringBuffer:多线程数据量多使用。线程安全,同步,效率低。
  • StringBuider:单线程数据量较多使用。线程不安全,不同步,效率高。(算法题中更常用)

初始化:

String str = "Hello";
StringBuilder sb = new StringBuilder(str);

常用API:

  • length()charAt()indexOf()substring()同String
  • void 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 附:学习路线

  1. 阶段一:Java语法与思想

1

  1. 阶段二:数据库核心技术

2

  1. 阶段三:Web技术规范
    • 建议一学

3

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

4

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

5

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

6

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

7

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

8

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

发表评论