JVM、 JRE、 JDK之间的关系
JVM负责将Java字节码翻译成机器码,以便在特定平台上执⾏Java程序。
JDK是Java的开发⼯具包,它包含了开发和编译Java程序所需的⼯具,以及运⾏Java程序的JRE
JRE是Java应⽤程序运⾏的环境,它包含了运⾏Java程序所需的库、 Java虚拟机(JVM)以及其他⽀持⽂件。
简⽽⾔之, JVM提供了Java程序运⾏的虚拟环境, JDK是⽤于开发Java程序的⼯具包,⽽JRE是⽤于运⾏Java程序的
环境。在开发阶段,你需要JDK;⽽在部署和运⾏阶段,你只需要JRE。
Java有⼏种数据类型
-
整型: byte 、 short、 int、 long (int默认)
-
浮点型: float 、 double (double默认)
-
布尔型: boolean
-
字符型: char
对应的包装类为 Byte 、 Short 、 Integer 、 Long 、 Float 、 Double 、 Character 、 Boolean
基础数据类型的转换⽅式
- ⾃动类型转换:⼩–>⼤ byte --> short --> int --> long --> float --> double
- 强制类型转换:⼤–>⼩ ⼩类型 变量名 = (⼤类型) 值
注意:⾃增/⾃减运算符、复合赋值运算符底层做了优化,内部⾃动强制类型转换; 如:++, --, +=, -=, ......
基本类型和包装类型的区别
为了在对象环境中使⽤基本类型, Java提供了对应的包装类型。
- 基本类型直接存储数据值,在栈上分配内存,占⽤固定的内存空间,
- 包装类型是对象动态分配内存,在堆上创建,包含额外的信息,例如⽅法和字段,同时也占⽤更多的内存空间。
不过Java提供了⾃动装箱(autoboxing)和拆箱(unboxing)的功能,使得基本类型和包装类型之间的转换更加
⽅便。
什么是⾃动装箱和⾃动拆箱
⾃动装箱是指将基本类型转换为对应的包装类型,⽽⾃动拆箱是指将包装类型转换为对应的基本类型。这些转换通常由编译器⾃动处理。
装箱其实就是调用了包装类的valueOf()方法,拆箱其实就是调用了xxxValue()方法。
注意:所有整型包装类对象之间值的标记,全部使用equals方法比较。
成员变量和局部变量的区别
1.声明位置:
- 成员变量:声明在类中,但在方法,构造函数或块之外。它们是类的一部分,因此可以被整个类的方法访问。
- 局部变量:声明在方法,构造函数或块中。它们只在声明它们的方法,构造函数或块中可见。
2.作用域
- 成员变量:具有类的整个实例的生命周期,可以在整个类中使用。
- 局部变量:仅在声明它们的方法,构造函数或块中可见,并且只在该方法,构造函数或块的执行期间存在。
3.生命周期
- 成员变量:随着对象的创建而创建,随着对象的销毁而销毁。
- 局部变量