java基础随记 持续完善中
Java基础
JDK、JRE、JVM三者之间的关系,以及JDK、JRE包含的主要结构有哪些
JDK(Java Development Kit)
JDK是Java开发工具包,是Sun Microsystems针对Java开发员的产品。
JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。
JDK是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
Java Runtime Environment(JRE)
是运行基于Java语言编写的程序所不可缺少的运行环境。也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。
JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,这些是运行Java程序的必要组件。
与大家熟知的JDK不同,JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户。
JVM(java virtual machine)
就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。
也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
只有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib,而jre包含lib类库。
JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
JDK = JRE + Java开发工具(javac.exe编译,java.exe执行,javadoc.exe说明文档)
JRE = JVM + Java核心类库
为什么要配置path环境变量?如何配置?
希望Java开发工具(javac.exe、java.exe)在任何文件路径下都可以执行成功
JAVA_HOME = bin的上一级目录
path = %JAVA_HOME%\bin
常用命令行操作有哪些?
应用程序 = 算法(正确与否) + 数据结构(存储问题,效率)
Java语言的特点
-
面向对象性:
两个要素:类、对象
三个特征:封装、继承、多态
-
健壮性:
去除了C语言中的指针
自动垃圾回收机制 --> 仍然会出现内存溢出、内存泄漏问题
-
跨平台性:
write once,run anywhere : 一次编译,到处运行(JVM)
标识符
-
标识符:凡是自己可以定义名字的地方都叫标识符,比如:类名、变量名、方法名、接口名、包名...
-
标识符的命名规则:--> 如果不遵守编译不通过
- 由26个英文字母大小写,0-9,_或$组成
- 数字不可以开头
- 不可以使用关键字和保留字,但可以包含关键字和保留字
- Java严格区分大小写,长度无限制
- 标识符不能包含空格
-
Java中名称命名规范:--> 如果不遵守编译可以通过
- 包名:多单词组成时所有字母小写
- 类名、接口名:多单词组成时,所有单词首字母大写
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写
- 常量名:所有字母大写,多单词时单词用下划线连接
-
注意1:起名字时,为提高阅读性,要尽量有意义,“见名知意”
注意2:Java采用unitcode字符集,因此标识符也可以使用汉字声明,但不建议使用
基本数据类型之间的运算规则
前提:不包含boolean类型
-
自动类型提升
结论:当容量小的数据类型变量于容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
说明:这里的容量大小指的是,表示数的范围的大和小,比如:float容量要大于long的容量
byte 、char、short --> int --> long --> float --> double
特别的:当byte、char、short三种类型做变量运算时,结果为int型
-
强制类型转换:自动类型提升的逆运算
-
需要使用转换符:()
-
注意点:强制类型转换,可能导致精度损失。
整形常量默认为int ,浮点型常量默认为double型
-
String类型变量的使用
- String属于引用数据类型,翻译为:字符串
- 声明String类型变量时,使用一对“”;
- String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+
- 运算的结果仍为String类型