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

常用命令行操作有哪些?

windows常用命令行命令

应用程序 = 算法(正确与否) + 数据结构(存储问题,效率)

Java语言的特点

  1. 面向对象性:

    两个要素:类、对象

    三个特征:封装、继承、多态

  2. 健壮性:

    去除了C语言中的指针

    自动垃圾回收机制 --> 仍然会出现内存溢出、内存泄漏问题

  3. 跨平台性:

    write once,run anywhere : 一次编译,到处运行(JVM)

标识符

  1. 标识符:凡是自己可以定义名字的地方都叫标识符,比如:类名、变量名、方法名、接口名、包名...

  2. 标识符的命名规则:--> 如果不遵守编译不通过

    • 由26个英文字母大小写,0-9,_或$组成
    • 数字不可以开头
    • 不可以使用关键字和保留字,但可以包含关键字和保留字
    • Java严格区分大小写,长度无限制
    • 标识符不能包含空格
  3. Java中名称命名规范:--> 如果不遵守编译可以通过

    • 包名:多单词组成时所有字母小写
    • 类名、接口名:多单词组成时,所有单词首字母大写
    • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写
    • 常量名:所有字母大写,多单词时单词用下划线连接
  4. 注意1:起名字时,为提高阅读性,要尽量有意义,“见名知意”

    注意2:Java采用unitcode字符集,因此标识符也可以使用汉字声明,但不建议使用

基本数据类型之间的运算规则

前提:不包含boolean类型

  1. 自动类型提升

    结论:当容量小的数据类型变量于容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。

    说明:这里的容量大小指的是,表示数的范围的大和小,比如:float容量要大于long的容量

    byte 、char、short --> int --> long --> float --> double

    特别的:当byte、char、short三种类型做变量运算时,结果为int型

  2. 强制类型转换:自动类型提升的逆运算

    • 需要使用转换符:()

    • 注意点:强制类型转换,可能导致精度损失。

    整形常量默认为int ,浮点型常量默认为double型

String类型变量的使用

  1. String属于引用数据类型,翻译为:字符串
  2. 声明String类型变量时,使用一对“”;
  3. String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+
  4. 运算的结果仍为String类型
posted @ 2020-05-13 10:38  民三岁  阅读(102)  评论(0编辑  收藏  举报