java内置方法总结及基础算法

1. 字符串操作 (String)

方法 说明 示例
获取信息
length() 返回长度 "abc".length() → 3
charAt(i) 获取字符 "abc".charAt(1) → 'b'
indexOf(str) 查找位置 "hello".indexOf("ll") → 2
检查
contains(str) 是否包含 "abc".contains("b") → true
isEmpty() 是否为空 "".isEmpty() → true
startsWith(str) 是否以...开头 "abc".startsWith("ab") → true
endsWith(str) 是否以...结尾 "abc".endsWith("bc") → true
转换
toUpperCase() 转大写 "abc".toUpperCase() → "ABC
toLowerCase() 转小写 "ABC".toLowerCase() → "abc"
trim() 去首尾空格 " a ".trim() → "a"
toCharArray() 转字符数组 "ab".toCharArray() -> 'a' , 'b'
操作
substring(begin, end) 截取子串 "hello".substring(1,4) → "ell"
concat 连接 "a".concat("b") -> "ab"
replace(old, new) 替换 "aab".replace("a","b") → "bbb"
replaceAll(regex, new) 正则替换 "a1b2".replaceAll("\d","") → "ab"
split(regex) 分割 "a,b,c".split(",") → "a","b","c"
join(delim, arr) 拼接 String.join("-","a","b") → "a-b"
其他
isBlank() (Java 11+) 是否空白 " ".isBlank() → true
valueOf(obj) 转字符串 String.valueOf(123) → "123"

常用正则表达式( replaceAll( ) )

需求 正则
所有数字 \\d
非数字 \\D
字母 a-zA-Z+
字母数字 \\w+
空白符 \\s+
中文 \\u4e00-\\u9fa5+
量词 含义 示例 匹配
+ 1次或多次(连续) \\d+ 123、5、999
* 0次或多次 \\d* ""、123
? 0次或1次 \\d? ""、5

2. StringBuilder / StringBuffer

方法 说明 示例
增加
append(str) 追加 sb.append("abc")
insert(idx, str) 插入 sb.insert(2, "x")
删除
delete(start, end) 删除区间字符[ ) sb.delete(1, 3)
deleteCharAt(idx) 删除字符 sb.deleteCharAt(0)
修改
replace(start, end, str) 替换区间字符 sb.replace(1,3,"xx")
reverse() 反转 sb.reverse()
setCharAt(i, c) 设置指定位置字符 sb.setCharAt(0,'A')
查询
charAt(i) 获取字符 sb.charAt(2)
length() 长度 sb.length()
toString() 转字符串 sb.toString()
indexOf(str) 查找位置 sb.indexOf("ab)
substring(begin, end) 截取子串 "hello".substring(1,4) → "ell"

3. 数学运算 (Math)

方法 说明 示例
abs(x) 绝对值 Math.abs(-5) → 5
max(a,b) 最大值 Math.max(3,5) → 5
min(a,b) 最小值 Math.min(3,5) → 3
pow(a,b) 幂运算 Math.pow(2,3) → 8.0
sqrt(x) 平方根 Math.sqrt(16) → 4.0
cbrt(x) 立方根 Math.cbrt(27) → 3.0
ceil(x) 向上取整 Math.ceil(3.2) → 4.0
floor(x) 向下取整 Math.floor(3.8) → 3.0
round(x) 四舍五入 Math.round(3.5) → 4
random() 随机数 [0,1) Math.random()
sin/cos/tan 三角函数 Math.sin(Math.PI/2) → 1.0
toRadians(deg) 角度转弧度 Math.toRadians(180) → π
toDegrees(rad) 弧度转角度 Math.toDegrees(π) → 180

4. 数组操作 (Arrays)

方法 说明 示例
sort(arr) 排序 Arrays.sort(arr)
binarySearch(arr, key) 二分查找 Arrays.binarySearch(arr, 5)
toString(arr) 转字符串 Arrays.toString(arr)
deepToString(arr) 二维数组转字符串 Arrays.deepToString(matrix)
fill(arr, val) 填充 Arrays.fill(arr, 0)
copyOf(arr, len) 复制 Arrays.copyOf(arr, 10)
copyOfRange(arr, from, to) 复制范围 Arrays.copyOfRange(arr,1,5)
equals(a,b) 比较 Arrays.equals(arr1, arr2)
asList(arr) 转 List Arrays.asList("a","b")

5. 集合操作 (Collections)

方法 说明 示例
sort(list) 排序 Collections.sort(list)
reverse(list) 反转 Collections.reverse(list)
max(list) 最大值 Collections.max(list)
min(list) 最小值 Collections.min(list)
binarySearch(list, key) 二分查找 Collections.binarySearch(list,5)
frequency(list, obj) 出现次数 Collections.frequency(list,"a")
swap(list, i, j) 交换 Collections.swap(list,0,1)
fill(list, obj) 填充 Collections.fill(list,0)
replaceAll(list, old, new) 替换 Collections.replaceAll(list,0,1)

6. 字符判断 (Character)

方法 说明 示例
isDigit(c ) 是否数字 Character.isDigit('5') → true
isLetter(c ) 是否字母 Character.isLetter('a') → true
isLetterOrDigit(c ) 是否字母或数字 Character.isLetterOrDigit('a') → true
isUpperCase( c) 是否大写 Character.isUpperCase('A') → true
isLowerCase( c) 是否小写 Character.isLowerCase('a') → true
toUpperCase( c) 转大写 Character.toUpperCase('a') → 'A'
toLowerCase( c) 转小写 Character.toLowerCase('A') → 'a'

7. 整数操作 (Integer)

方法 说明 示例
parseInt(s) 字符串转 int Integer.parseInt("123") → 123
parseInt(s, radix) 指定进制 Integer.parseInt("ff",16) → 255
toString(n) int 转字符串 Integer.toString(123) → "123"
toString(n, radix) 指定进制 Integer.toString(255,16) → "ff"
bitCount(n) 二进制中1的个数 Integer.bitCount(5) → 2
reverse(n) 二进制反转 Integer.reverse(1) → -2147483648
max(a,b) 最大值 Integer.max(3,5) → 5
min(a,b) 最小值 Integer.min(3,5) → 3
sum(a,b) 求和 Integer.sum(3,5) → 8
compare(a,b) 比较 Integer.compare(3,5) → -1

8.常用工具方法速查

需求 方法
字符串转 int Integer.parseInt(s)
int 转字符串 String.valueOf(n) 或 Integer.toString(n)
字符串转数组 s.toCharArray()
数组转字符串 new String(arr) 或 Arrays.toString(arr)
比较字符串 a.equals(b)(不要用 ==)
忽略大小写比较 a.equalsIgnoreCase(b)
判断是否为空 s == null
判断是否空白 s == null
随机数 (int)(Math.random() * 100) 或 new Random().nextInt(100)
深拷贝数组 arr.clone() 或 Arrays.copyOf(arr, arr.length)
数组转 List Arrays.asList(arr)
List 转数组 list.toArray(new String0)

9.常用正则表达式

需求 正则
数字 \d+
字母 a-zA-Z+
字母数字 \w+
空白符 \s+
中文 \\u4e00-\\u9fa5+

10.集合

List集合(有序,可重复)

声明: List<数据类型> list =new ArrayList<>();

Set集合(无序,不重复)(HashSet去重)

声明: Set<数据类型> set = new HashSet<>();

Map集合

声明: Map< K V> map = new HashMap<>();

map.put(K key,V value); 将指定的键和值关联起来,若键已存在则替换旧值

排序

数组

升序:Arrays.sort(arr);

降序:Arrays.sort(arr, (o1,o2)->o2-o1);

List集合

升序:Collections.sort(list);

降序:Collections.sort(list, Collections.reverseOrder());

整数降序:list.sort((a, b) -> b - a);

字符串降序:

java 复制代码
List<String> list = new ArrayList<>(Arrays.asList("banana", "apple", "cherry", "date"));

// 字典序降序
list.sort((a, b) -> b.compareTo(a));
System.out.println(list);  // [date, cherry, banana, apple]

// 按长度降序
list.sort((a, b) -> b.length() - a.length());
System.out.println(list);  // [banana, cherry, apple, date]

11.栈和队列

栈直接用Deque 实现栈(效率更高)

声明:Deque<引用数据类型> deque = new ArrayDeque<>();

如果要查找元素位置直接遍历查找

队列

Queue 接口(LinkedList 实现)

声明:Queue<引用数据类型> queue = new LinkedList<>();


双端队列 Deque

声明:Deque deque = new ArrayDeque<>();


优先级队列 PriorityQueue

默认最小堆(升序)

PriorityQueue< Integer> pq = new PriorityQueue<>();

最大堆(降序):

PriorityQueue< Integer> pq = new PriorityQueue<>((a, b) -> b - a);

基本方法和Deque(栈)相同

前缀和

一维前缀和

java 复制代码
// 构建前缀和数组(多开一个位置,方便处理边界)
			 int[] arr = new int[n]; //原数组从0开始
        int[] prefix = new int[n + 1];
        for (int i = 1; i <= n; i++) {
            prefix[i] = prefix[i - 1] + arr[i - 1];
        }

// 查询区间和 [l, r](0-based 索引)
        int sum = prefix[r + 1] - prefix[l];

二维前缀和

模板:

java 复制代码
			 int[][] arr = new int[n][m];
        int[][] sum = new int[n + 1][m + 1];
        // 构建前缀和
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                sum[i][j] = arr[i-1][j-1] 
               			 + sum[i-1][j] 
               			 + sum[i][j-1] 
               			 - sum[i-1][j-1];
            }

// 查询 (x1, y1) 到 (x2, y2) 的子矩阵和
public static int query(int[][] sum, int x1, int y1, int x2, int y2) {
    // 注意:如果使用 1-based 索引,直接使用
    return sum[x2][y2] 
         - sum[x1-1][y2] 
         - sum[x2][y1-1] 
         + sum[x1-1][y1-1];
}

差分

模板:

java 复制代码
public class Difference {
    public static void main(String[] args) {
        int[] arr = {2, 5, 3, 7, 4};
        int n = arr.length;
        
        // 1. 构建差分数组
        int[] diff = new int[n + 1];  // 多开一个位置,防止 r+1 越界
        diff[0] = arr[0];
        for (int i = 1; i < n; i++) {
            diff[i] = arr[i] - arr[i - 1];
        }
        //[2 , 3 , -2 , 4 , -3]
        
        // 2. 区间操作:将 [1, 3] 的元素加 10
        int l = 1, r = 3, x = 10;
        diff[l] += x;
        diff[r + 1] -= x;
        //[2 , 13 , -2 , 4 , -13]
         
        // 3. 从差分还原原数组(前缀和)
        int[] newArr = new int[n];
        newArr[0] = diff[0];
        for (int i = 1; i < n; i++) {
            newArr[i] = newArr[i - 1] + diff[i];
        }
        
        // 输出结果
        System.out.println("原数组: " + Arrays.toString(arr));
        System.out.println("操作后: " + Arrays.toString(newArr));
        // 原数组: [2, 5, 3, 7, 4]
        // 操作后: [2, 15, 13, 17, 4]  ← 索引1-3都加了10
    }
}

注意!!!

1.若读取数字之后要读取一整行字符串

那么用Integer.parseInt(sc.nextLine());读取数字

sc.nextLine();读取一整行字符串

相关推荐
哪 吒3 分钟前
华为OD机试 - 云服务安全策略最优选择 - 深度优先搜索DFS(Java 新系统 200分)
java·华为od·深度优先
拒绝内耗。5 分钟前
程序员学架构(一):一张图看懂 Java 后端架构:一个请求怎样从手机到数据库?
java·智能手机·架构
棣廷6 分钟前
初识Python面向对象
java·开发语言
用户31268748772010 分钟前
ThreadLocal 到底会不会内存泄漏?源码级拆解 + 线程池陷阱
java
珍珠先生14 分钟前
P11 · MySQL 驱动版本过旧:Client does not support authentication protocol
java
软行18 分钟前
LeetCode 每日一题 3876. 构造奇偶一致的数组 II
c++·算法·leetcode
~木雨23 分钟前
Java 并发编程架构全景:并发层的五域设计 —— 线程模型、线程池隔离、并发安全到问题治理(全体系汇总)
java·安全·架构·线程池·并发编程·高并发架构
极小狐41 分钟前
从复制粘贴到可复用组件:极狐GitLab CI/CD 组件目录实战
java·ci/cd·gitlab·devops·组件化
绿算技术43 分钟前
Solidigm联合绿算技术共同发布《面向 SOHO AI 推理的存储扩展方案》技术白皮书
人工智能·科技·算法·架构·spark
麻瓜code1 小时前
【Agent】Spring AI RAG 实战:本地向量库 + 云端知识库
java·人工智能·spring