常用函数和语法

  1. System.out打印一个二维数组
  2. 数组在函数参数传递中,在函数内部被改变,
  3. 数组如何在声明的时候直接赋初值?
  4. Integer.parseInt和Integer.valueOf()
  5. ThreadLocal在线程池中使用,使用完毕必须清理线程的ThreadLocal,避免污染下一个复用的线程操作
  6. Objects.equals()传入两个null,返回true。其函数定义如下:
public static boolean equals(Object a, Object b) {
    return (a == b) || (a != null && a.equals(b));
}

Integer转换成String #

在Java中,将整数(int)转换为字符串(String)有几种常见方法,以下是详细的说明和示例:


1. 使用 String.valueOf(int) #

推荐方式,简洁且可读性高。

int num = 123;
String str = String.valueOf(num);
System.out.println(str); // 输出 "123"

2. 使用 Integer.toString(int) #

String.valueOf() 类似,性能几乎相同。

int num = 456;
String str = Integer.toString(num);
System.out.println(str); // 输出 "456"

3. 通过字符串拼接(隐式转换) #

直接与空字符串拼接,Java会自动调用 String.valueOf()

int num = 789;
String str = "" + num;
System.out.println(str); // 输出 "789"

注意:虽然简单,但会生成额外的临时字符串,性能稍差(在循环中不推荐)。


4. 使用 String.format() #

适合需要格式化输出的场景(如补零、对齐等)。

int num = 42;
String str = String.format("%d", num); // 格式化为十进制
System.out.println(str); // 输出 "42"

5. 使用 StringBuilderStringBuffer #

适用于需要频繁拼接的场景(实际转换整数时较少用)。

int num = 101;
String str = new StringBuilder().append(num).toString();
System.out.println(str); // 输出 "101"

注意事项: #

  • 性能String.valueOf()Integer.toString() 是最优选择,底层实现相同。
  • 进制转换:如果需要转为其他进制(如二进制、十六进制),可以用 Integer.toBinaryString()Integer.toHexString()
    int num = 255;
    String binary = Integer.toBinaryString(num); // "11111111"
    String hex = Integer.toHexString(num);      // "ff"
    

总结: #

  • 推荐String.valueOf(int)Integer.toString(int)
  • 避免:在循环中使用 "" + int(性能较差)。
  • 特殊需求:格式化或进制转换时选择对应方法。

String转换成Integer #

在Java中,将字符串(String)或字符数组(char[])转换为整数(int)有几种常用方法,具体取决于输入格式和需求。以下是详细说明和示例:


1. 将 String 转为 int #

方法 1:Integer.parseInt(String)(推荐) #

适用于标准十进制字符串,如果字符串格式非法(如包含非数字字符),会抛出 NumberFormatException

String str = "123";
int num = Integer.parseInt(str);
System.out.println(num); // 输出 123

其会自动忽略前导零

 Integer.parseInt(new String("000001"))
 // $1 ==> 1

方法 2:Integer.valueOf(String) #

parseInt 类似,但返回 Integer 对象(自动拆箱为 int)。

String str = "456";
int num = Integer.valueOf(str); // 自动拆箱
System.out.println(num); // 输出 456

方法 3:处理进制转换 #

如果字符串是二进制、八进制或十六进制,可以指定进制:

String binaryStr = "1010";  // 二进制
int binaryNum = Integer.parseInt(binaryStr, 2);  // 2 表示二进制
System.out.println(binaryNum); // 输出 10

String hexStr = "FF";  // 十六进制
int hexNum = Integer.parseInt(hexStr, 16);  // 16 表示十六进制
System.out.println(hexNum); // 输出 255

方法 4:处理可能的非法输入 #

使用 try-catch 避免 NumberFormatException

String str = "123abc";
try {
    int num = Integer.parseInt(str);
    System.out.println(num);
} catch (NumberFormatException e) {
    System.err.println("非法数字格式: " + str);
}

2. 将 char[] 转为 int #

方法 1:先转为 String,再用 parseInt #

char[] charArray = {'1', '2', '3'};
String str = new String(charArray);
int num = Integer.parseInt(str);
System.out.println(num); // 输出 123

方法 2:逐字符计算(适用于单个数字字符) #

如果 char[] 只包含一个数字字符(如 '5'),可以直接计算:

char ch = '7';
int num = ch - '0';  // ASCII 计算:'7' - '0' = 7
System.out.println(num); // 输出 7

如果 char[] 包含多位数字,可以遍历计算:

char[] digits = {'1', '2', '3'};
int num = 0;
for (char c : digits) {
    num = num * 10 + (c - '0');
}
System.out.println(num); // 输出 123

3. 特殊情况处理 #

(1)处理前导/后导空格 #

使用 trim() 移除空格:

String str = "  123  ";
int num = Integer.parseInt(str.trim()); // 自动去掉空格
System.out.println(num); // 输出 123

(2)处理空字符串或 null #

String str = "";
try {
    int num = Integer.parseInt(str);
} catch (NumberFormatException e) {
    System.err.println("输入不能为空");
}

(3)处理大数字(超出 int 范围) #

如果字符串表示的数字超过 Integer.MAX_VALUE(2147483647),会抛出异常。可以使用 Long.parseLong()

String bigNumStr = "2147483648";  // 比 Integer.MAX_VALUE 大 1
try {
    long bigNum = Long.parseLong(bigNumStr);
    System.out.println(bigNum);  // 2147483648
} catch (NumberFormatException e) {
    System.err.println("数字超出范围");
}

总结 #

场景方法示例
StringintInteger.parseInt(str)int num = Integer.parseInt("123");
String(二进制/十六进制)→ intInteger.parseInt(str, radix)int hex = Integer.parseInt("FF", 16);
char[]int先转 StringparseIntint num = Integer.parseInt(new String(charArray));
单个 charintASCII 计算 (ch - '0')int num = '7' - '0';
处理非法输入try-catchtry { Integer.parseInt(str); } catch (...) { ... }

推荐优先使用 Integer.parseInt(),因为它直接返回 int,而 Integer.valueOf() 返回 Integer 对象(可能涉及自动拆箱)。