今天在写算法题的时候发现,由于过于依赖idea编译器,导致忘记常用的数据的方法和基本数据类型转换,故写了这篇文章,给以后自己刷算法提供便利。
Java 基础核心知识点(算法题高频)
一、Java 8 种基本类型
基本类型无成员方法,需通过包装类调用方法。重点记忆 “类型名 ↔ 包装类” 及核心用途,避免int直接调用toString()的错误。
| 基本类型 | 对应的包装类 | 默认值 | 占用空间 | 核心用途 |
|---|---|---|---|---|
byte | Byte | 0 | 1 字节 | 字节流、节省内存(少用) |
short | Short | 0 | 2 字节 | 同上,比byte范围大(少用) |
int | Integer | 0 | 4 字节 | 算法题默认整数类型(优先用) |
long | Long | 0L | 8 字节 | 大整数(需加后缀L,如100L) |
float | Float | 0.0f | 4 字节 | 单精度浮点数(少用,精度低) |
double | Double | 0.0d | 8 字节 | 浮点数默认类型(如3.14) |
char | Character | '\u0000' | 2 字节 | 单个字符(如'a'、'1') |
boolean | Boolean | false | 1 位(不确定) | 逻辑判断(true/false) |
二、数组创建(3 种核心场景)
数组是 “固定长度的同类型容器”,创建时需指定长度或初始化元素(长度不可变),常见于算法题中的 “线性结构”“矩阵” 场景。
1. 一维数组(最常用)
| 数组类型 | 动态初始化(先指定长度,后赋值) | 静态初始化(直接赋值,长度自动计算) |
|---|---|---|
int数组 | java int[] arr = new int[5]; | java int[] arr = new int[]{1,2,3}; |
(初始值:int默认0) | (简化写法:int[] arr = {1,2,3};,需一行写完) | |
String数组 | java String[] arr = new String[3]; | java String[] arr = {"a","b","c"}; |
char数组 | java char[] arr = new char[4]; | java char[] arr = {'h','e','l','l','o'}; |
2. 二维数组(矩阵场景用)
可理解为 “数组的数组”,适用于二维矩阵、表格类题目:
java
运行
// 动态初始化1:3行2列(每行长度固定)
int[][] matrix = new int[3][2];
// 动态初始化2:3行,每行长度不固定(后续赋值)
int[][] matrix = new int[3][];
matrix[0] = new int[]{1,2}; // 第0行长度2
matrix[1] = new int[]{3}; // 第1行长度1
// 静态初始化:直接赋值所有元素(推荐,清晰)
int[][] matrix = {{1,2},{3,4},{5,6}};
3. 数组核心注意点
- 长度获取:一维数组用
arr.length;二维数组用matrix.length(行数)、matrix[0].length(第 0 行的列数)。 - 相等比较:数组无
equals()方法,需用Arrays.equals(arr1, arr2)(需导包import java.util.Arrays;),比较 “元素是否完全相同”。 - 默认值:基本类型数组默认对应基本类型的默认值(如
int数组默认0);引用类型数组(如String[])默认null。
三、高频常用方法(按 “类” 整理,算法题必记)
按 “包装类→数组工具→String” 分类,记清 “方法名 + 用途 + 调用方式”(静态方法用 “类名。方法”,实例方法用 “对象。方法”)。
1. 基本类型包装类的常用方法(以Integer、Character为例)
| 类名 | 方法名 | 用途 | 示例 |
|---|---|---|---|
Integer | static String toString(int x) | 把int转成String | Integer.toString(123) → "123" |
static int parseInt(String s) | 把String转成int(需s是数字格式) | Integer.parseInt("123") → 123 | |
static Integer valueOf(int x) | 把int转成Integer对象(装箱) | Integer.valueOf(123) → Integer对象 | |
Character | static boolean isDigit(char c) | 判断字符是否是数字(0-9) | Character.isDigit('5') → true |
static boolean isLetter(char c) | 判断字符是否是字母(a-z/A-Z) | Character.isLetter('a') → true | |
static char toLowerCase(char c) | 字符转小写 | Character.toLowerCase('A') → 'a' |
提示:
Long、Double用法类似,如Long.toString(123L)、Double.parseDouble("3.14")。
2. 数组工具类 Arrays(需导包import java.util.Arrays;)
算法题操作数组的核心工具类,记 3 个高频方法:
| 方法名 | 用途 | 示例 |
|---|---|---|
static void sort(int[] arr) | 对数组升序排序(直接修改原数组) | java int[] arr={3,1,2}; Arrays.sort(arr); → [1,2,3] |
static boolean equals(int[] a, int[] b) | 比较两个数组的元素是否完全相同 | Arrays.equals({1,2},{1,2}) → true |
static String toString(int[] arr) | 把数组转成String(方便打印调试) | Arrays.toString({1,2}) → "[1,2]" |
3. String 类常用方法(字符串操作必记)
算法题中处理字符串(如回文数、字符串反转)高频用到,记 6 个核心方法:
| 方法名 | 用途 | 示例 |
|---|---|---|
int length() | 获取字符串长度(字符个数) | "abc".length() → 3 |
char charAt(int index) | 获取指定索引的字符(索引从 0 开始) | "abc".charAt(1) → 'b' |
boolean equals(String s) | 比较两个字符串的内容是否相同(区分大小写) | "abc".equals("ABC") → false |
String substring(int start, int end) | 截取子串([start, end),左闭右开) | "abcde".substring(1,3) → "bc" |
char[] toCharArray() | 把字符串转成char数组(方便遍历字符) | "abc".toCharArray() → {'a','b','c'} |
static String valueOf(int x) | 把基本类型转成String(同Integer.toString) | String.valueOf(123) → "123" |
关键提醒:
String是不可变的:s += "a"会创建新字符串,而非修改原字符串;- 比较内容用
equals(),不要用==(==比较地址,不是内容)。
四、记忆小技巧
- 场景绑定法:记 “需求→方法”,如 “int 转 String”→
Integer.toString(x);“排序数组”→Arrays.sort(arr);“取字符串某字符”→charAt(index)。 - 强制手写练习:写代码时先手动敲完方法名(如
Arrays.equals),错了再修正,避免依赖提示。 - 简化小抄:将核心方法整理成短句(如 “int 转 String:Integer.toString”“数组排序:Arrays.sort”),算法题前看 1 分钟强化记忆。