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();读取一整行字符串

相关推荐
做cv的小昊8 分钟前
【World Model】π0.5:a Vision-Language-Action Model with Open-World Generalization
人工智能·算法·机器学习·大模型·多模态·vla·世界模型
摇滚侠33 分钟前
《On Java 中文版 基础卷》阅读笔记 对象无处不在 03
java·笔记·python
لا معنى له35 分钟前
World-In-World: World Models in a Closed-Loop World
算法
二十雨辰1 小时前
[学成在线]-01项目背景
java
弈栈录2 小时前
Java AI 应用的异步化与高并发设计
java·后端·架构
落魄实习生2 小时前
Agent Scope Java 2.x 系列【2】 ReActAgent
java·开发语言
艸肅2 小时前
Ubuntu 安装 JDK (含手动安装)
java·ubuntu·jdk
m0_734172422 小时前
Python字典计数怎样处理首次出现的键
java
卓怡学长3 小时前
w204基于springbo旅行社签证代理服务系统
java·spring boot·spring·intellij-idea
Discipline10293 小时前
尼泊尔河流流量:天气驱动的预测与高流量风险
人工智能·算法