java基础知识全集(一篇看到爽)(持续更新中)
java规范(企业级)
-
见名知意, 命名合理
- 强调了命名的可读性和合理性。
-
驼峰命名法
- 大驼峰:首字母大写,之后每个单词的首字母也大写(如:MyVariableName)。
- 小驼峰:首字母小写,之后每个单词的首字母大写(如:myVariableName)。
-
类名、接口名:大驼峰写法
- 类名和接口名应采用大驼峰格式。
-
变量名、方法名:小驼峰写法
- 变量和方法名应采用小驼峰格式。
-
常量名:全字母大写,单词之间下划线间隔
- 常量名应该全部大写,并用下划线分隔多个单词(如:CONSTANT_NAME)。
-
包名:全字母小写
- 包名应该全部小写。
-
包名规范
- 包名应由公司域名倒序+项目名+模块名+功能名组成。
- 尽量使用单个单词,如果需要多个单词则用下划线分割。
-
花括号前要加空格
- 花括号前面需添加一个空格以保持代码整洁。
-
双元运算符左右要加空格
- 双元运算符两侧都需要有空格以提高代码的可读性。
JDK相关
jdk层次
具体的关系如下:
- JDK 包含 JRE;
- JRE 包含 JVM;
- JDK(Java Development Kit):Java开发工具包,包含了用于开发和运行Java应用程序的所有工具和库。
- JRE(Java Runtime Environment):Java运行时环境,是运行已编译好的Java程序所必需的环境。
- JVM(Java Virtual Machine):Java虚拟机,负责解释执行字节码文件,实现跨平台特性。
配置环境
-
设置JAVA_HOME环境变量:
- 打开“此电脑”->选择“属性”->进入“高级系统设置”->点击“环境变量”->新建一个名为"JAVA_HOME"的系统变量,并将JDK目录的地址写入其中。
- 区分了用户变量和系统变量的区别:用户变量仅限当前用户使用;而系统变量所有用户都可以使用。
-
设置PATH环境变量:
- 打开“此电脑”->选择“属性”->进入“高级系统设置”->点击“环境变量”->找到Path变量->将JDK下的bin目录地址写入Path变量中。
DOS命令
这张图片列出了Java开发环境中常用的一些命令行工具及其功能:
- java -version:查看Java版本信息。
- javac -version:查看Javac编译器版本信息。
- javac:用于编译Java源文件(
.java
)。 - java:运行已编译的class文件。
- java -jar:运行打包为JAR文件的Java应用程序。
- jps:列出当前系统中所有Java进程的ID和名称。
- jinfo:查询Java进程的配置信息,如JVM参数、系统属性等。
- jstat:显示Java应用程序的性能统计信息,如类加载、垃圾回收等。
- jmap:生成Java堆内存的快照,用于分析内存泄漏等问题。
- jstack:生成Java线程的堆栈跟踪,用于分析线程死锁等问题。
- keytool:管理密钥库(keystore)和证书。
- javadoc:从Java源代码中提取注释并生成API文档。
- 命令名 -help:获取指定命令的帮助信息。
jvm运行内存结构
JVM(Java Virtual Machine,Java虚拟机)是Java技术的核心之一,它提供了一种与平台无关的运行环境,使得Java程序能够在不同的操作系统和硬件平台上运行而无需修改。JVM是Java语言跨平台能力的关键所在。
-
程序计数器(Program Counter Register):
- 主要功能是记录当前线程执行的字节码指令的地址。
- 每个线程都有自己独立的程序计数器。
- 程序计数器的值在异常处理过程中也发挥重要作用。
- 占用的内存空间非常小。
-
本地方法栈(Native Method Stacks):
- 每个线程都有自己的本地方法栈,保证了线程之间的隔离性和独立性。
- 通常不受Java内存管理(如垃圾回收)的直接控制。
- 调用一个Native方法时,JVM会创建一个新的栈帧。
-
虚拟机栈(VM Stack):
- 栈帧由局部变量表、操作数栈、动态链接(指向运行时常量池的引用)、方法返回地址等部分组成。
- 每个方法的执行都对应着虚拟机栈中的一个栈帧,栈帧是虚拟机栈的基本单位。
- 虚拟机栈的生命周期与线程的生命周期一致。
- 虚拟机栈是线程私有的。
-
方法区(Method Area):
- 方法区在JVM启动时创建,并在JVM关闭时销毁。
- 存储类的元数据信息、常量池、静态变量等。
- 方法区是各个线程共享的内存区域。
- 堆(Heap)
- 堆是JVM中所有线程共享的一块内存区域。
- 堆是垃圾回收器管理的主要区域。
- 存储对象实例和数组。
数据类型
基本数据类型
整数型
-
byte: 1字节
-
short: 2字节
-
int: 4字节
-
long: 8字节
其中long需要"L"结尾。
表示形式
- 以0b开头的数字是二进制数;
- 以0开头的数字是八进制数;
- 以0x开头的数字是十六进制数;
- 结尾为E或e的数字是科学计数法,后面跟着10的几次方,可为负数。
浮点型
- float: 4字节,需要"F"结尾。
- double: 8字节。
逻辑型
- boolean: 1字节。
字符型
- char: 2字节。
整数型特点
- Java中出现的整数型字面量默认为int类型,数字过大时会报错。
- Java中小于int数据类型的变量做运算会都先转换成int类型再运算。
浮点型特点
- Java中出现的浮点型字面量默认为double类型。
- 计算机底层存储浮点数的近似值,不能使用“==”来比较。所以判定时差值小于一个极小的小数即可。
类型转换
-
自动类型转换:
- Java中的数据类型按照从小到大的顺序进行自动转换:byte < short < int < long < float < double。
-
强制数据类型转换:
- 强制类型转换需要显式指定目标数据类型。
- 例如,int y = (int)(x); 表示将变量 x 的值转换为整型赋值给 y。
-
多种数据类型的混合运算结果:
- 当在表达式中混合使用不同数据类型时,最终的结果会以其中最大的数据类型为准。