这里对java的知识体系做一个全域的介绍

java基础

我觉得可以有这样一个思路

就是psvm快捷键,

我们创造出一个java的可以执行的主方法。

那么在方法里写什么内容。

运行一段小的可执行的代码。

我们可以写数据类型,

基本数据类型

引用数据类型

然后是对数据去进行操作

数字类型的基本数据类型,

以及变量之间的运算符操作,赋值运算。

其中时间类型的数据

金额类型的数据

string类型的数据要额外处理

然后,对于运算的结果,

就是我们可以看到的效果,与我们交互的机制

就是:

可以铜锁sout以及log.info打印一下。

接下来就是if逻辑运算

if(){}

()里面的内容,可以涉及关系运算符,逻辑运算符。

或者三目运算符

这里指的注意的就是

switch case

中间,我们为了提高类的代码复用的效果,创造了方法这个概念。

类型,传参,返回值。方法体(也就是运算机制)

这里要注意的就是return这个关键字

方法里面,一定要有return,除非类型是void

这里还要讲一个概念。就是异常。

我们想一个场景,

如果想让这段程序,提高鲁棒性。

就要使用try catch把可能出现异常的代码,抓住,不影响,程序继续执行。

按着这个思路,javase相关的代码。就有一条明确的主线可以去学了。

这是一个非常棒的Java学习主线思路!你把Java SE的核心脉络梳理得很清晰:入口 → 数据 → 操作 → 输出 → 逻辑 → 复用 → 健壮性。这确实是很好的教学/学习路径。

我按照你的思路,整理一份完整可运行的代码示例,把每个知识点串联起来:

java 复制代码
package com.example.basic;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.logging.Logger;

/**
 * Java基础主线学习示例
 * 入口 -> 数据类型 -> 运算符 -> 输出 -> 逻辑判断 -> 方法 -> 异常处理
 */
public class JavaBasicMain {

    // 日志打印(另一种输出方式)
    private static final Logger log = Logger.getLogger(JavaBasicMain.class.getName());

    // psvm 快捷键入口
    public static void main(String[] args) {
        // ==================== 1. 数据类型 ====================
        dataTypeDemo();

        // ==================== 2. 运算符操作 ====================
        operatorDemo();

        // ==================== 3. 逻辑运算 if & switch ====================
        logicDemo();

        // ==================== 4. 方法调用 ====================
        int sum = add(10, 20);
        System.out.println("方法调用结果(10+20):" + sum);

        // ==================== 5. 异常处理(提高鲁棒性) ====================
        exceptionDemo();
    }

    // ==================== 1. 数据类型演示 ====================
    public static void dataTypeDemo() {
        System.out.println("========== 数据类型 ==========");

        // 基本数据类型
        byte b = 127;                // 1字节
        short s = 1000;              // 2字节
        int i = 100000;              // 4字节(最常用)
        long l = 9999999999L;        // 8字节,注意加L
        float f = 3.14f;             // 4字节,加f
        double d = 3.1415926535;     // 8字节
        char c = 'A';                // 2字节,单引号
        boolean flag = true;         // true/false

        System.out.println("byte: " + b);
        System.out.println("short: " + s);
        System.out.println("int: " + i);
        System.out.println("long: " + l);
        System.out.println("float: " + f);
        System.out.println("double: " + d);
        System.out.println("char: " + c);
        System.out.println("boolean: " + flag);

        // 引用数据类型
        // String(特殊引用类型,常用)
        String str = "Hello Java";
        System.out.println("String: " + str);

        // 时间类型(重要)
        LocalDate today = LocalDate.now();
        LocalDateTime now = LocalDateTime.now();
        System.out.println("日期: " + today);
        System.out.println("日期时间: " + now);
        System.out.println("格式化时间: " + now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

        // 金额类型(重要:用BigDecimal,不用float/double)
        BigDecimal price1 = new BigDecimal("19.99");
        BigDecimal price2 = new BigDecimal("0.03");
        BigDecimal total = price1.add(price2);
        System.out.println("金额(BigDecimal): " + price1 + " + " + price2 + " = " + total);
        System.out.println();
    }

    // ==================== 2. 运算符演示 ====================
    public static void operatorDemo() {
        System.out.println("========== 运算符 ==========");

        int a = 10;
        int b = 3;

        // 算术运算符
        System.out.println("加法: " + (a + b));
        System.out.println("减法: " + (a - b));
        System.out.println("乘法: " + (a * b));
        System.out.println("除法: " + (a / b));      // 整数除法,结果3
        System.out.println("取模(余数): " + (a % b)); // 10 ÷ 3 余1

        // 赋值运算符
        int c = a;           // 基本赋值
        c += 5;              // 等价于 c = c + 5
        System.out.println("赋值后c: " + c);

        // 关系运算符(结果boolean)
        System.out.println("a > b: " + (a > b));
        System.out.println("a == b: " + (a == b));

        // 逻辑运算符
        boolean x = true;
        boolean y = false;
        System.out.println("x && y: " + (x && y));  // 与:全真才真
        System.out.println("x || y: " + (x || y));  // 或:有真则真
        System.out.println("!x: " + (!x));           // 非:取反

        System.out.println();
    }

    // ==================== 3. 逻辑判断 ====================
    public static void logicDemo() {
        System.out.println("========== 逻辑判断 ==========");

        int score = 85;

        // if-else
        if (score >= 90) {
            System.out.println("成绩: 优秀");
        } else if (score >= 60) {
            System.out.println("成绩: 及格");
        } else {
            System.out.println("成绩: 不及格");
        }

        // 关系运算符 + 逻辑运算符组合
        int age = 25;
        boolean hasCar = true;
        if (age >= 18 && hasCar) {
            System.out.println("成年且有车,可以自驾");
        }

        // 三目运算符(条件 ? 真值 : 假值)
        String result = (score >= 60) ? "通过" : "不通过";
        System.out.println("三目运算结果: " + result);

        // switch case(注意:要写break,否则会穿透)
        int day = 3;
        switch (day) {
            case 1:
                System.out.println("周一");
                break;
            case 2:
                System.out.println("周二");
                break;
            case 3:
                System.out.println("周三");
                break;
            default:
                System.out.println("其他天");
                break;
        }

        // Java 14+ 增强switch(更简洁,不用break)
        String dayType = switch (day) {
            case 1, 2, 3, 4, 5 -> "工作日";
            case 6, 7 -> "周末";
            default -> "未知";
        };
        System.out.println("增强switch: " + dayType);

        System.out.println();
    }

    // ==================== 4. 方法(代码复用) ====================
    // 有返回值、有参数的方法
    // 注意:非void类型,必须有return
    public static int add(int num1, int num2) {
        int sum = num1 + num2;
        return sum;   // return关键字:返回结果并结束方法
    }

    // void类型:无返回值,可以不写return(或者只写return;)
    public static void printMessage(String msg) {
        if (msg == null) {
            return;   // 提前结束方法
        }
        System.out.println("消息: " + msg);
    }

    // 方法重载(参数不同)
    public static double add(double num1, double num2) {
        return num1 + num2;
    }

    // ==================== 5. 异常处理(提高鲁棒性) ====================
    public static void exceptionDemo() {
        System.out.println("========== 异常处理(提高鲁棒性) ==========");

        // 场景:可能出现异常的代码,用try-catch抓住,程序不会崩溃
        String numberStr = "abc123";  // 这个不是合法数字

        try {
            // 这行代码可能抛出NumberFormatException
            int parsedNumber = Integer.parseInt(numberStr);
            System.out.println("转换结果: " + parsedNumber);
        } catch (NumberFormatException e) {
            // 异常被捕获,程序不会崩,可以友好提示或记录日志
            System.out.println("捕获到异常: 字符串无法转换为数字!");
            log.warning("转换失败: " + e.getMessage());

            // 可以给一个默认值,让程序继续
            int defaultNumber = 0;
            System.out.println("使用默认值: " + defaultNumber);
        }

        // 多个异常捕获
        try {
            int[] arr = {1, 2, 3};
            System.out.println(arr[10]);  // 数组越界
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("数组下标越界异常被捕获,程序继续执行");
        }

        // finally块:无论是否异常,都会执行
        try {
            System.out.println("执行正常代码...");
        } catch (Exception e) {
            System.out.println("不会进来");
        } finally {
            System.out.println("finally: 一定会执行(比如关闭资源)");
        }

        System.out.println("异常处理演示结束,程序正常走到这里!");
        System.out.println();
    }
}

思路总结成学习地图:

顺序 知识点 核心要点 代码体现
1 程序入口 psvm / main 方法 第11行
2 数据类型 8种基本类型 + 引用类型(String、时间、BigDecimal) dataTypeDemo()
3 运算符 算术、赋值、关系、逻辑 operatorDemo()
4 输出交互 System.out.println / log.info 分散在各方法
5 逻辑控制 ifswitch、三目运算符 logicDemo()
6 方法封装 返回值、参数、returnvoid add() 方法
7 异常处理 try-catch-finally 提高鲁棒性 exceptionDemo()
相关推荐
catchadmin2 小时前
使用 PHP TrueAsync 改造 Laravel 协程异步化的可行路径
开发语言·php·laravel
wbs_scy2 小时前
【Linux 线程进阶】进程 vs 线程资源划分 + 线程控制全详解
java·开发语言
ss2732 小时前
食谱推荐系统功能测试如何写?
java·数据库·spring boot·功能测试
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题】【Java基础篇】第15题:JDK1.7中HashMap扩容为什么会发生死循环?如何解决
java·开发语言·数据结构·后端·面试·哈希算法
m0_674294642 小时前
如何编写SQL存储过程性能对比_记录执行时间评估优化效果
jvm·数据库·python
try2find3 小时前
打印ascii码报错问题
java·linux·前端
014-code3 小时前
CompletableFuture 实战模板(超时、组合、异常链处理)
java·数据库
运气好好的3 小时前
怎样开启phpMyAdmin的操作审计日志_记录每条执行的SQL
jvm·数据库·python
Nicander3 小时前
多数据源下@transcation事务踩坑
java·后端