一个相当简要的java要点总结(这算摸鱼文吧)

一、Java语言深度解析

噗噗,这份笔记我有一个更好,更全的,这个只是为了快点背,如果要查看全面详细,费劲本大爷心思精细书写的请转《java快速学习速查》系列

因为不想排版所以很多直接包裹在代码块里了,这篇文章更多的是为了测试mermaid是否可以正常渲染

1.1 语言本质剖析

Java是一种严格遵循”Write Once, Run Anywhere”原则的高级编程语言,其核心特性包括:

  • 跨平台性:通过JVM实现字节码的跨平台执行
  • 面向对象:完全基于对象的编程范式(封装/继承/多态)
  • 自动内存管理:垃圾回收机制(GC)自动处理内存分配与释放
  • 多线程支持:原生支持多线程并发编程

1.2 发展历程详解

有种写书人既视感,很啰嗦欸

时间节点 重大事件 技术影响
1991 Oak语言诞生 面向家电嵌入式系统
1995.5.23 正式更名Java 首个公开版本JDK 1.0a2
1998 J2SE 1.2发布 引入集合框架/JIT编译器
2004 J2SE 5.0 泛型/自动装箱/注解等革命性特性
2014 Java 8 Lambda表达式/Stream API

二、开发环境专业配置

2.1 JDK组件架构

1
2
3
4
graph LR
JDK-->开发工具(javac/javadoc/jdb)
JDK-->JRE-->JVM
JDK-->JRE-->核心类库(rt.jar等)

这是个图(解析不出来算了,我也不想我也不想耗费资源)

2.2 环境变量原理

  • JAVA_HOME:指向JDK安装根目录
    • 示例:C:\Program Files\Java\jdk-17.0.2
  • PATH:添加%JAVA_HOME%\bin使系统识别命令
  • CLASSPATH(可选):指定类加载路径

验证命令示例:

1
2
3
4
5
6
# 查看版本
java -version
javac -version

# 查看环境变量
echo %JAVA_HOME%

三、HelloWorld深度解读

3.1 程序结构分解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* 类声明:访问修饰符 + class关键字 + 类名
* 要求:类名与文件名严格一致(区分大小写)
*/
public class HelloWorld {

/**
* 主方法:程序唯一入口
* public static void 固定写法
* String[] args 用于接收命令行参数
*/
public static void main(String[] args) {
// 系统输出语句
System.out.println("Hello World!");
}
}

3.2 编译执行全流程

  1. 编译阶段(生成字节码)

    1
    javac -encoding UTF-8 HelloWorld.java
    • 生成HelloWorld.class文件
    • -encoding参数解决中文乱码
  2. 运行阶段(JVM解释执行)

    1
    java HelloWorld

    注意:运行时不需要.class后缀

四、代码规范最佳实践

4.1 注释规范模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 单行注释:方法内部简短说明

/*
* 多行注释:复杂逻辑说明
* 第二行说明
*/

/**
* 类/方法文档注释(支持HTML标签)
* @author 作者
* @version 1.0
* @param 参数说明
* @return 返回值说明
*/

4.2 命名规范细则

元素类型 规范示例 错误示例
类名 UserService userService
方法名 getUserName() GetUserName()
变量名 studentCount StudentCount
常量名 MAX_SIZE maxSize

五、数据类型系统详解

5.1 基本类型内存布局

1
2
3
4
5
6
7
8
9
10
pie
title 基本类型内存占比
"byte" : 1
"short" : 2
"int" : 4
"long" : 8
"float" : 4
"double" : 8
"char" : 2
"boolean" : 1

这是个饼图你信不信,反正我是信了,解析的出来就解析出来,没有就罢了

5.2 类型转换原理

自动转换规则(满足以下任一条件):

  1. 目标类型范围大于源类型
    1
    2
    int i = 100;
    double d = i; // 自动转换
  2. 表达式中的自动提升
    1
    2
    byte b = 10;
    int r = b + 20; // byte自动提升为int

强制转换风险点

掉精度警告,数据类型报错警告,类型组合相性警告

1
2
3
4
double price = 99.99;
int discount = (int)price; // 丢失小数部分(得99)

char c = (char)1000; // 可能产生意外字符

六、运算符高级应用

6.1 位运算实战

1
2
3
4
5
6
// 权限控制示例
final int READ = 1 << 0; // 0001
final int WRITE = 1 << 1; // 0010

int permission = READ | WRITE; // 0011(3)
boolean canRead = (permission & READ) != 0;

6.2 运算符优先级表

优先级 运算符 结合性
1 () [] . 左→右
2 ! ~ ++ -- 右→左
3 * / % 左→右
4 + - 左→右
5 << >> >>> 左→右
6 < <= > >= 左→右

七、企业级编码规范

  1. 防御式编程

    1
    2
    3
    4
    // 对象判空
    if (obj == null) {
    throw new IllegalArgumentException("参数不能为空");
    }
  2. 常量定义原则

    1
    2
    3
    4
    5
    6
    7
    8
    // 使用枚举替代魔法数字
    public enum Color {
    RED("#FF0000"),
    GREEN("#00FF00");

    private String hexCode;
    // 构造方法...
    }
  3. 文档化要求

    • 所有public类/方法必须包含JavaDoc
    • 复杂算法需要添加实现思路说明
    • 修改历史通过@since标记

没搞完喔,等着更新……,先用着