哈喽各位掘金的小伙伴~ 写Java时总觉得自己的代码又长又冗余?其实几个进阶小技巧就能让代码颜值和效率双提升!今天分享3个进阶偏基础的实用知识点,附极简代码示例,新手也能秒上手👇
1. 方法引用:简化Lambda,代码更清爽
Lambda表达式已经够简洁了?方法引用能让它更“瘦身”,直接复用已有方法,告别冗余的箭头函数!
核心用法:当Lambda体只调用一个已有方法时,用 类名::方法名 替代
import java.util.Arrays;
import java.util.List;
public class MethodRefDemo {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// Lambda写法
names.forEach(name -> System.out.println(name));
// 方法引用写法:更简洁,可读性拉满
names.forEach(System.out::println);
// 再举一例:集合转大写(结合Stream)
names.stream()
.map(String::toUpperCase) // 替代 s -> s.toUpperCase()
.forEach(System.out::println);
}
}
2. 可变参数:告别数组重载,传参更灵活
还在为不同数量的参数写多个重载方法?可变参数( ... )一招搞定,支持传入任意数量的同类型参数!
核心用法:参数类型后加 ... ,本质是数组,但传参更方便
public class VarargsDemo {
// 可变参数方法:计算多个整数的和
public static int sum(int... nums) {
int total = 0;
for (int num : nums) {
total += num;
}
return total;
}
public static void main(String[] args) {
// 可以传任意数量的参数,甚至不传
System.out.println(sum(1, 2)); // 输出 3
System.out.println(sum(1, 2, 3, 4)); // 输出 10
System.out.println(sum()); // 输出 0
}
}
注意:可变参数必须是方法的最后一个参数,且一个方法只能有一个可变参数。
3. try-with-resources:自动关闭资源,告别内存泄漏
手动关闭流、连接等资源容易忘? try-with-resources 语法糖能自动关闭实现了 AutoCloseable 接口的资源,安全又省心!
核心用法:将资源声明在 try() 中,代码块结束后自动关闭
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class TryWithResourcesDemo {
public static void main(String[] args) {
// 传统写法:需要手动close,容易遗漏
BufferedReader br1 = null;
try {
br1 = new BufferedReader(new FileReader("test.txt"));
System.out.println(br1.readLine());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br1 != null) br1.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 进阶写法:try-with-resources自动关闭资源
try (BufferedReader br2 = new BufferedReader(new FileReader("test.txt"))) {
System.out.println(br2.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
}
总结
这3个小技巧都是Java进阶的“基础款”,用起来不复杂,但能让代码质量提升一大截:
1. 方法引用:简化Lambda,代码更简洁
2. 可变参数:灵活传参,减少重载方法
3. try-with-resources:自动关资源,避免内存泄漏