Java进阶小白手册:基础玩法升级,告别青铜套路

一、ArrayList vs LinkedList:选对集合不踩坑

java 复制代码
// ArrayList(数组底层,查得快、增删慢)
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("掘金Javaer");
arrayList.get(0); // 直接索引,效率高

// LinkedList(链表底层,增删快、查得慢)
LinkedList<String> linkedList = new LinkedList<>();
linkedList.addFirst("首元素");
linkedList.removeLast(); // 首尾操作效率高

核心:查多增删少用ArrayList,增删多用LinkedList。

二、异常处理:try-catch进阶用法

java 复制代码
// 多异常合并捕获
try {
    int a = 10 / 0;
    String str = null;
    str.length();
} catch (ArithmeticException | NullPointerException e) {
    // 同一逻辑处理多种异常
    System.out.println("异常:" + e.getMessage());
} finally {
    // 必执行(关流、释放资源)
    System.out.println("无论对错都执行");
}

// 自定义异常
class MyException extends Exception {
    public MyException(String msg) {
        super(msg);
    }
}
// 使用自定义异常
public static void checkAge(int age) throws MyException {
    if (age < 0) throw new MyException("年龄不能为负");
}
 

三、接口进阶:默认方法与静态方法

java 复制代码
interface UserService {
    // 抽象方法(必须实现)
    void login();
    
    // 默认方法(可选实现,解决接口升级兼容)
    default void register() {
        System.out.println("默认注册逻辑");
    }
    
    // 静态方法(接口直接调用)
    static void showTips() {
        System.out.println("登录前请验证信息");
    }
}

// 实现类
class UserServiceImpl implements UserService {
    @Override
    public void login() {
        System.out.println("用户登录");
    }
}

// 调用
UserService.showTips(); // 接口直接调用静态方法
UserServiceImpl userService = new UserServiceImpl();
userService.login();
userService.register();

四、包装类:自动拆装箱避坑

java 复制代码
// 自动装箱(基本类型→包装类)
Integer a = 10; // 等价于 Integer a = Integer.valueOf(10);
// 自动拆箱(包装类→基本类型)
int b = a; // 等价于 int b = a.intValue();

// 避坑:-128~127有缓存,超出则新对象
Integer c = 127;
Integer d = 127;
System.out.println(c == d); // true
Integer e = 128;
Integer f = 128;
System.out.println(e == f); // false
System.out.println(e.equals(f)); // true(比较值用equals)
相关推荐
学长毕设8 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
zzu123zsw10 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
源码集结号10 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统
论文复现现场11 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
啃瓜子的松鼠11 小时前
泛微OAe9-后端二开异步调用
java
秋天的怀念_David12 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法
外收内放12 小时前
Python基础语法练习题(73)
java·前端·python
Wang's Blog12 小时前
Java 项目实战: 交友项目 - 环信后台发送消息测试
java·交友
用户37215742613513 小时前
Java 操作 Word 脚注和尾注:添加、读取与删除
java
小嘉丶学长13 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节