• Java最基础模糊知识点快过


    关于JDK、JRE、JVM

    在这里插入图片描述

    简单理解:

    JDK(Java Development Kit)简单理解就是Java开发工具包。
    JDK = JRE + 开发工具集(例如Javac编译工具等)

    JRE(Java Runtime Enviroment):Java的运行环境。
    JRE = JVM + Java SE标准类库

    JVM( java virtual machine):Java虚拟机。(JVM是Java跨平台的核心)(充当翻译官的角色)

    JDK是面向开发者的,JRE是面向使用JAVA程序的用户。

    JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。

    在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库。

    如果讲的具体点就是bin目录下的jvm.dll文件, jvm.dll无法单独工作,当jvm.dll启动后,会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位 于jvm.dll所在目录的父目录之中。

    因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录下的jvm.dll。

    Java跨平台原理(一次编译,到处执行):

    在这里插入图片描述
    执行时,表面上,我们调用的是java.exe,实际上,此时动态调用了JVM。

    JVM将字节码文件一行行地解释成为当前OS认识的可执行文件格式。(Java是个”解释型“语言)

    第一个Java程序编写

    代码编写

    public class hello {
    	public static void main(String[] args) {
    		System.out.println("hello");
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    注意

    1. java文件的名称必须跟public class的名称保持一致
    2. 一个java文件中可以包含多个class,凡是public class只能有1个
    3. public static void main(String[] args)是所有java程序的入口,如果向执行对应的java代码,则必须要添加如下方法,且格式是固定
    4. main方法中参数列表可以支持多种写法:String[] args,String [] args,String args[]
    5. main方法中参数的名称无所谓,但是一般写成args
    6. java代码在编写的时候,每行结尾的时候需要使用;结束
    7. java代码的代码块需要使用{}括起来,前后匹配

    编译阶段(编译器创建class字节码文件 )

    • 进入java文件所在目录,执行命令:javac hello.java
    • 编译时必须加上扩展名.java
      在这里插入图片描述

    执行阶段

    • 进入java文件所在目录,执行命令:java Welcome
    • 运行的是类而非class文件,所以类名后不能加扩展名.class
      在这里插入图片描述

    关于注释

    注释不会出现在字节码文件中。(Java编译器编译时会跳过注释语句)

    验证:(使用反编译工具)
    在这里插入图片描述

    在这里插入图片描述
    使用反编译工具进行反编译,没有发现注释。

    原因:因为编译的时候不会对注释进行处理,所以反编译时不可能得到注释。

    命名规则

    和C/C++很相似,除了多了一个$符号和汉字。

    因为:Java不采用通常语言使用的ASCII字符集,Java采用unicode这样的标准的国际字符集。

    但是不建议使用汉字来命名。

    数据类型

    Java——强类型语言:

    1. 常量是有数据类型的
    2. 变量都必须声明其数据类型
    • 基本数据类型(四种八类):
      • 数值型
        • 整数类型(byte、short、int、long)
        • 浮点类型(float、double)
      • 字符型(char)
      • 布尔型(boolean)
    • 引用数据类型
      • 类(class)
      • 接口(interface)
      • 数组

    基本数据类型

    整数类型:

    byte short int long(不同类型表示不同的长度)

    1. byte: 使用一个字节存储,因此范围是 -128-127
    2. short: 使用两个字节存储,因此范围是 -32768-32767
    3. int: 使用四个字节存储,因此范围是 正负21亿
    4. long: 使用八个字节存储

    注意:

    1. 在使用整型类型的时候,默认都是int类型,
    2. 如果需要使用long类型的话,必须要在数字的后面添加L,建议使用大写,小写容易跟1混淆。

    浮点类型: float double

    小数类型:使用小数点 使用科学计数法

    1. float: 单精度,精度可以精确到小数点后7位
    2. double: 双精度,精度是float的双倍

    注意:
    1、默认浮点类型是double类型
    2、使用float的时候,数字后要添加f
    3、浮点类型并不能表示一个精确的值,会损失一定的精度

    字符类型: char

    占用2个字节,使用的时候使用''表示

    布尔类型: boolean

    只有truefalse两值,在存储的时候占1位

    引用数据类型:


    接口
    数组

    关于变量和常量

    变量

    1. 在类内,方法外定义的变量叫成员变量,会存在默认值

    2. 在方法内,定义的变量必须要进行初始化操作,不会存在默认值

    3. 不存在全局变量

    4. 给变量赋值过程中,变量的值成为常量

    常量

    使用final修饰的变量,只能被初始化一次,变成了常量。

    final int t = 1;
    
    • 1

    关于数据类型转换(自动转换、强制转换)

    boolean类型外,所有的基本数据类型因为各自的精度不同,赋值时都要考虑这个问题

    类型转换的方向

    低------------------------------------------------------>高
    byte —> short,char—>int —>long—>float —>double

    总结

    =右侧:所有变量先转换为字节数最多的数据类型,再计算

    =两侧:

    1. 左侧宽度>右侧宽度 自动转换
    2. 左侧宽度<右侧宽度 强制转换

    特例
    可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强 制类型转换,只要不超出其表数范围

    short b = 12;  //合法
    short b = 1234567; //非法
    
    • 1
    • 2

    switch多分支选择结构注意点

    只能处理等值条件判断的情况,且表达式必须为 byte,short,int或char类型 ,不能是Stringdouble,float

    1.7之后可以使用string

    关于while循环

    在C/C++中经常用的一个写法,在Java中不能用。
    在这里插入图片描述
    换个写法:

    while (n-- != 0) {
        sum += h;
        h /= 2;
    }
    
    • 1
    • 2
    • 3
    • 4

    这种情况也出现在if中,因为在Java中,有了纯粹的布尔类型。

    关于数组

    //声明数组
    int[] array;
    //创建内存空间
    array = new int[5];
    //数组赋值
    array[0] = 0;
    array[1] = 1;
    array[2] = 2;
    array[3] = 3;
    array[4] = 4;
    //数组操作
    System.out.println(array[0]);
    
    //数组的几种创建方式
    //1、声明并申请空间
    int[] arr1 = new int[5];
    int [] arr2 = new int[5];
    int  arr3[] = new int[5];
    //2、声明数组并赋值
    int[] arr4 = new int[]{1,2,3,4,5};
    //3、直接初始化操作
    int[] arr5 = {1,2,3};
    		
    //获取数组的长度
    System.out.println(arr1.length);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    数组是引用类型,当创建完成数组之后相当于是在方法外定义了一个变量,此时数组中的值是有默认值的。

    默认是什么,取决于你定义的数组的类型:
    int:0
    String null
    boolean false

  • 相关阅读:
    CSS 滚动驱动动画 animation-range
    Java EE -- Spring
    对象创建过程
    基于Python实现的神经网络分类MNIST数据集
    ASTM D 3801固体塑料垂直燃烧试验
    SQL-基础
    vue+高德地图实现区域掩模
    微信公众号怎么变更认证主体?
    93.(后端)分类参数增加接口实现——flask框架使用蓝图与restful发送请求添加数据
    Android开发基础:Activity的生命周期 Activity中的数据保持
  • 原文地址:https://blog.csdn.net/Uperrr/article/details/124896081