全网最通俗易懂 Java 核心知识点总结!方法 + 数组 + 类对象 + 继承 + 异常全攻略

发布时间:2026/6/9 8:03:42

全网最通俗易懂 Java 核心知识点总结!方法 + 数组 + 类对象 + 继承 + 异常全攻略 一、Java 方法让代码复用起来告别 CV 大法1.1 方法到底是什么在 Java 里方法就是一段可以重复调用的代码块把固定逻辑封装起来想用的时候直接调用就行不用反复复制粘贴。说白了一段逻辑封装一次到处调用方法标准定义格式背会就能写修饰符 返回值类型 方法名(参数类型 形参...) { 方法体代码; return 返回值; // 没有返回值写void不用return }我给大家拆解一下一看就懂修饰符public、static、private 等决定方法能被谁调用返回值类型方法执行完返回什么数据int/String/void 无返回值方法名见名知意小驼峰命名参数调用方法时传进来的数据方法体真正干活的代码1.2 方法重载面试必考开发常用很多初学者最容易懵的点来了方法重载先记牢三句话永远不会错方法名必须完全相同参数列表必须不同个数不同 / 类型不同 / 顺序不同和返回值类型一毛钱关系都没有这就是 Java 的 **“同名不同参”** 机制让同一个方法名可以处理不同类型的数据。实战代码一看就会public class TestMethod { public static void main(String[] args) { // 编译器会自动根据参数匹配对应方法 add(1, 2); // 调用 int int add(1.5, 2.5); // 调用 double double add(1.5, 2.5, 3.5); // 调用三个double相加 } // 两个int相加 public static int add(int x, int y) { return x y; } // 两个double相加 —— 构成重载 public static double add(double x, double y) { return x y; } // 三个double相加 —— 构成重载 public static double add(double x, double y, double z) { return x y z; } }真实开发场景打印不同类型数据、计算不同参数求和、工具类方法全靠重载1.3 递归自己调用自己代码极简但逻辑强大递归是什么方法自己调用自己把大问题拆成一模一样的小问题。写递归只需要抓住两点递归公式怎么拆分成子问题递归出口必须有停止条件否则死循环栈溢出经典实战求阶乘最经典递归案例public class TestRecursion { public static void main(String[] args) { int n 5; int ret factor(n); System.out.println(5的阶乘 ret); // 结果120 } // 递归求阶乘 public static int factor(int n) { // 递归出口n1时直接返回1 if (n 1) { return 1; } // 递归公式n! n * (n-1)! return n * factor(n - 1); } }小白提醒递归千万别漏出口否则直接报错StackOverflowError二、Java 数组批量存数据高效又方便2.1 数组定义两种方式必须掌握数组就是相同类型数据的集合开辟一块连续空间存数据。1动态初始化指定长度不赋值int[] array1 new int[10]; // 创建长度为10的int数组2静态初始化直接赋值长度自动算double[] array2 new double[]{1.0, 2.0, 3.0}; int[] array3 {10, 20, 30}; // 简化写法数组默认值超级重要创建数组不赋值JVM 会自动给默认值int/short/byte/long→0float/double→0.0char→\u0000boolean→false引用类型 →null2.2 数组使用取值、赋值、遍历通过下标访问元素下标从 0 开始int[] array {10, 20, 30, 40, 50}; System.out.println(array[0]); // 取第一个元素10 array[0] 100; // 修改第一个元素三种遍历方式开发全能用到普通 for 循环最常用for (int i 0; i array.length; i) { System.out.println(array[i]); }增强 for 循环foreach简洁for (int x : array) { System.out.println(x); }2.3 一维 / 二维数组快速打印神器不用写循环一行代码打印数组一维数组Arrays.toString ()import java.util.Arrays; public class Test { public static void main(String[] args) { int[] arr {1,2,3,4,5}; System.out.println(Arrays.toString(arr)); // 输出[1, 2, 3, 4, 5] } }二维数组Arrays.deepToString ()import java.util.Arrays; public class Test { public static void main(String[] args) { int[][] arr {{1,2},{3,4},{5,6}}; System.out.println(Arrays.deepToString(arr)); // 输出[[1, 2], [3, 4], [5, 6]] } }真实开发调试、打印日志必用这两个方法三、类与对象Java 的灵魂面向对象核心3.1 什么是类什么是对象类模板抽象概念比如 “手机”对象具体实例比如 “你的 iPhone”先有类后有对象3.2 定义一个类成员变量 成员方法public class Date { // 成员变量属性 public int year; public int month; public int day; // 成员方法行为 public void setDay(int y, int m, int d) { // this代表当前对象 this.year y; this.month m; this.day d; } public void printDate() { System.out.println(year / month / day); } public static void main(String[] args) { // 实例化对象 Date d1 new Date(); d1.setDay(2025, 1, 1); d1.printDate(); // 输出2025/1/1 } }重点this指向当前调用方法的对象谁调用就代表谁3.3 封装安全访问权限控制面试必考封装就是把数据藏起来不让外部随便改通过方法访问。四大访问权限修饰符从小到大private私有只有自己能用default默认包访问权限protected子类 包访问public公共谁都能用我给大家总结最实用的属性全部 private提供 public 的 get/set 方法对外方法 public内部方法 private3.4 static 关键字静态成员类级别static 是类属性、类方法不属于对象属于类本身静态变量特点所有对象共享一份存在方法区推荐用类名。变量访问随类加载创建随类卸载销毁静态方法特点静态方法里不能访问非静态成员静态方法不能使用 this工具类方法Arrays、Collections全是静态方法3.5 代码块三种代码块你必须分清实例代码块构造代码块给对象赋值静态代码块给类初始化只执行一次普通代码块写在方法里限制变量作用域public class TestBlock { // 静态变量 public static String staticName; // 实例变量 public int age; // 静态代码块类加载执行一次 static { staticName 静态代码块; System.out.println(静态代码块执行); } // 实例代码块创建对象执行 { age 18; System.out.println(实例代码块执行); } public static void main(String[] args) { // 普通代码块 { int a 10; System.out.println(a); } new TestBlock(); } }四、Java 继承代码复用神器面向对象三大特性之一4.1 继承是什么子类继承父类直接拥有父类非私有属性和方法不用重复写代码格式class 子类 extends 父类 { }Java 只支持单继承一个类只能有一个父类4.2 方法重写Override子类改造父类方法重写和重载完全不是一回事面试必问重写规则死记硬背方法名、参数列表完全相同返回值类型兼容协变返回子类权限不能比父类更严格不能抛出更大异常实战代码class Base { public void methodB() { System.out.println(父类methodB); } } class Derived extends Base { // 重写父类方法 Override public void methodB() { System.out.println(子类methodB); } public void test() { methodB(); // 调用子类重写后的方法 super.methodB(); // 调用父类方法 } }super 关键字代表父类对象访问父类属性 / 方法。4.3 向上转型 向下转型向上转型安全自动转父类引用指向子类对象Animal animal new Bird();只能调用父类方法不能调用子类特有方法。向下转型强制转有风险if (animal instanceof Bird) { Bird bird (Bird) animal; }必须用 instanceof 判断否则类型转换异常五、Java 异常程序的 “安全气囊”开发必掌握5.1 异常体系结构Java 所有异常的顶层父类Throwable两大分支ErrorJVM 严重错误栈溢出、内存溢出程序员改不了Exception程序异常可以捕获处理5.2 异常两大类编译时异常受检异常编译期间就报错IOException、SQLException运行时异常非受检异常运行才报错NullPointerException、数组越界5.3 异常捕获标准格式try { // 可能出异常的代码 } catch (异常类型 e) { // 捕获并处理异常 } finally { // 无论是否异常一定执行 }5.4 自定义异常企业开发超常用业务系统中用户名错误、密码错误都用自定义异常// 用户名异常 class UserNameException extends Exception { public UserNameException(String message) { super(message); } } // 密码异常 class PasswordException extends Exception { public PasswordException(String message) { super(message); } } public class Login { private static String username admin; private static String password 123456; public static void login(String name, String pwd) throws UserNameException, PasswordException { if (!name.equals(username)) { throw new UserNameException(用户名错误); } if (!pwd.equals(password)) { throw new PasswordException(密码错误); } System.out.println(登录成功); } public static void main(String[] args) { try { login(admin, 123456); } catch (UserNameException e) { e.printStackTrace(); } catch (PasswordException e) { e.printStackTrace(); } } }真实开发登录、注册、支付、校验全用自定义异常

相关新闻