当前位置: 首页 > news >正文

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)转 ListArrays.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)字符串转 intInteger.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.常用工具方法速查

需求方法
字符串转 intInteger.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)
数组转 ListArrays.asList(arr)
List 转数组list.toArray(new String[0])

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);
字符串降序:

List<String>list=newArrayList<>(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(栈)相同

前缀和

一维前缀和

// 构建前缀和数组(多开一个位置,方便处理边界)int[]arr=newint[n];//原数组从0开始int[]prefix=newint[n+1];for(inti=1;i<=n;i++){prefix[i]=prefix[i-1]+arr[i-1];}// 查询区间和 [l, r](0-based 索引)intsum=prefix[r+1]-prefix[l];

二维前缀和

模板:

int[][]arr=newint[n][m];int[][]sum=newint[n+1][m+1];// 构建前缀和for(inti=1;i<=n;i++){for(intj=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) 的子矩阵和publicstaticintquery(int[][]sum,intx1,inty1,intx2,inty2){// 注意:如果使用 1-based 索引,直接使用returnsum[x2][y2]-sum[x1-1][y2]-sum[x2][y1-1]+sum[x1-1][y1-1];}

差分

模板:

publicclassDifference{publicstaticvoidmain(String[]args){int[]arr={2,5,3,7,4};intn=arr.length;// 1. 构建差分数组int[]diff=newint[n+1];// 多开一个位置,防止 r+1 越界diff[0]=arr[0];for(inti=1;i<n;i++){diff[i]=arr[i]-arr[i-1];}//[2 , 3 , -2 , 4 , -3]// 2. 区间操作:将 [1, 3] 的元素加 10intl=1,r=3,x=10;diff[l]+=x;diff[r+1]-=x;//[2 , 13 , -2 , 4 , -13]// 3. 从差分还原原数组(前缀和)int[]newArr=newint[n];newArr[0]=diff[0];for(inti=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();读取一整行字符串

http://www.jsqmd.com/news/614217/

相关文章:

  • 008、模型优化:剪枝、量化、蒸馏与TensorRT部署加速全攻略
  • 【2026开年巨献】精通Python十讲:第十讲 - 设计模式、架构与工程化思维
  • 微信网页版浏览器扩展技术实现与架构解析
  • 从零入门性能测试:理论+JMETER实操,看完就能上手啬
  • 如何用JIEJIE.NET有效保护.NET程序集版权?全面实践指南
  • DoraMate 项目(18) - Dora C# 绑定开发与集成指南:从 Node 到 NativeAOT Operator 的落地实践
  • 2026.04.07随记
  • 一文学习 工作流开发 BPMN、 Flowable脱
  • 【Hot 100 刷题计划】 LeetCode 240. 搜索二维矩阵 II | C++ 巧妙利用单调性 (BST 法)
  • AI写文+自动发布实现方法,自媒体矩阵新玩法
  • OpCore-Simplify:智能配置效率工具如何重塑黑苹果安装体验
  • 2026最新盘点:十大高清壁纸图片素材网站与背景图片素材网站推荐 - 品牌2025
  • YOLO-Master 与 YOLO 开始嫡
  • 我做的丐版 Claude Code 代码已开源
  • 题解:P16208 [ECUSTPC 2025] 金色走廊
  • OpenClaw 2026.3.31 版本授权报错/执行被拒问题排查与解决
  • Product Hunt 每日热榜 | 2026-04-09
  • RimSort:智能模组管理工具解决RimWorld加载冲突与性能优化指南
  • CSSCI论文写作10:质化研究方法
  • 如何选择精密电子产品用排针排母厂家?2026年专业选购指南 - 品牌策略主理人
  • 隐写术工具技术指南:从原理到实践的完整探索
  • 如何突破NCM格式限制?ncmdumpGUI让音乐自由播放的完整方案
  • 3分钟掌握Windows安卓应用安装神器:APK-Installer终极指南
  • GoCodingInMyWay嘶
  • 5步快速解锁网易云音乐NCM文件:ncmdumpGUI完整使用指南
  • 快速体验AI绘画:雯雯的后宫-造相Z-Image-瑜伽女孩镜像部署教程
  • 二分查找力扣题(leetcode)浇
  • 双迹美业系统软件开发(现成案例)
  • 零基础鸿蒙应用开发第三十一节:await简化异步编程与Promise进阶并发
  • 题解:P16209 [ECUSTPC 2025] 眼见为实