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

张开发
2026/4/9 19:01:25 15 分钟阅读

分享文章

java内置方法总结及基础算法
1. 字符串操作 (String)方法说明示例获取信息length()返回长度“abc”.length() → 3charAt(i)获取字符“abc”.charAt(1) → ‘b’indexOf(str)查找位置“hello”.indexOf(“ll”) → 2检查contains(str)是否包含“abc”.contains(“b”) → trueisEmpty()是否为空“”.isEmpty() → truestartsWith(str)是否以…开头“abc”.startsWith(“ab”) → trueendsWith(str)是否以…结尾“abc”.endsWith(“bc”) → true转换toUpperCase()转大写“abc”.toUpperCase() → ABCtoLowerCase()转小写“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() → truevalueOf(obj)转字符串String.valueOf(123) → “123”常用正则表达式 replaceAll( ) 需求正则所有数字\\d非数字\\D字母[a-zA-Z]字母数字\\w空白符\\s中文[\u4e00-\u9fa5]量词含义示例匹配1次或多次连续\\d123、5、999*0次或多次\\d*“”、123?0次或1次\\d?“”、52. 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) → 5max(a,b)最大值Math.max(3,5) → 5min(a,b)最小值Math.min(3,5) → 3pow(a,b)幂运算Math.pow(2,3) → 8.0sqrt(x)平方根Math.sqrt(16) → 4.0cbrt(x)立方根Math.cbrt(27) → 3.0ceil(x)向上取整Math.ceil(3.2) → 4.0floor(x)向下取整Math.floor(3.8) → 3.0round(x)四舍五入Math.round(3.5) → 4random()随机数 [0,1)Math.random()sin/cos/tan三角函数Math.sin(Math.PI/2) → 1.0toRadians(deg)角度转弧度Math.toRadians(180) → πtoDegrees(rad)弧度转角度Math.toDegrees(π) → 1804. 数组操作 (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’) → trueisLetter(c )是否字母Character.isLetter(‘a’) → trueisLetterOrDigit(c )是否字母或数字Character.isLetterOrDigit(‘a’) → trueisUpperCase( c)是否大写Character.isUpperCase(‘A’) → trueisLowerCase( c)是否小写Character.isLowerCase(‘a’) → truetoUpperCase( c)转大写Character.toUpperCase(‘a’) → ‘A’toLowerCase( c)转小写Character.toLowerCase(‘A’) → ‘a’7. 整数操作 (Integer)方法说明示例parseInt(s)字符串转 intInteger.parseInt(“123”) → 123parseInt(s, radix)指定进制Integer.parseInt(“ff”,16) → 255toString(n)int 转字符串Integer.toString(123) → “123”toString(n, radix)指定进制Integer.toString(255,16) → “ff”bitCount(n)二进制中1的个数Integer.bitCount(5) → 2reverse(n)二进制反转Integer.reverse(1) → -2147483648max(a,b)最大值Integer.max(3,5) → 5min(a,b)最小值Integer.min(3,5) → 3sum(a,b)求和Integer.sum(3,5) → 8compare(a,b)比较Integer.compare(3,5) → -18.常用工具方法速查需求方法字符串转 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);字符串降序ListStringlistnewArrayList(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[]arrnewint[n];//原数组从0开始int[]prefixnewint[n1];for(inti1;in;i){prefix[i]prefix[i-1]arr[i-1];}// 查询区间和 [l, r]0-based 索引intsumprefix[r1]-prefix[l];二维前缀和模板int[][]arrnewint[n][m];int[][]sumnewint[n1][m1];// 构建前缀和for(inti1;in;i){for(intj1;jm;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};intnarr.length;// 1. 构建差分数组int[]diffnewint[n1];// 多开一个位置防止 r1 越界diff[0]arr[0];for(inti1;in;i){diff[i]arr[i]-arr[i-1];}//[2 , 3 , -2 , 4 , -3]// 2. 区间操作将 [1, 3] 的元素加 10intl1,r3,x10;diff[l]x;diff[r1]-x;//[2 , 13 , -2 , 4 , -13]// 3. 从差分还原原数组前缀和int[]newArrnewint[n];newArr[0]diff[0];for(inti1;in;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();读取一整行字符串

更多文章