1 JDK JRE JVM关系
1)JDK:java开发工具包,整个Java的核心,它集成了 jre 和一些好用的小工具javac.exe,java.exe,jar.exe 以及Java基础类库。它能够创建和编译程序。
2)JRE:java 运行时环境,包括 Java 虚拟机,Java 类库,java 命令和其他的一些基础构件。但是,它不能用于创建新程序,如果只是为了运行一下 Java 程序的话,那么你只需要安装 JRE 就可以了
3)JVM:Java Virtual Machine(Java虚拟机)的缩写,jvm 是 Java 能够跨平台的核心。jvm 只能认识class文件,并将它们解释到系统的 API 调用,针对不同的系统有不同的 jvm 实现,有 Linux 版本的 jvm 实现,也有 Windows 版本的 jvm 实现,同一段代码在编译后的字节码是一样的,从而实现代码的不加修改即可跨平台运行
JDK包含JRE和JVM,JRE包含JVM.
2 JAVA语言特点
- 1)Java是一种面向对象的语言,使用对象调用它的属性/方法
- 2)Java通过JVM实现了平台无关性,一次编译,到处运行
- 3)反射机制的存在具有动态编译
- 4)不支持类的多重继承,但可以接口的多实现
- 5)GC,支持自动垃圾回收
- 6)支持多线程
- 7)支持网络编程
- 8)具有较高的安全性和可靠性
3 JAVA基本数据类型
类型 |
关键字 |
包装器类型 |
占内存 |
取值范围 |
默认值 |
字节型 |
byte |
Byte |
1 |
-128 ~ 127 |
0 |
短整型 |
short |
Short |
2 |
-2^15 ~ 2^15-1 |
0 |
整型 |
int |
Integer |
4 |
-2^31 ~ 2^31-1 |
0 |
长整型 |
long |
Long |
8 |
-2^63 ~ 2^63-1 |
0L |
单精度浮点型 |
float |
Float |
4 |
3.4e-45 ~ 1.4e38 |
0.0F |
双精度浮点型 |
double |
Double |
8 |
4.9e-324 ~ 1.8e308 |
0.0D |
字符型 |
char |
Character |
2 |
'\u0000' |
|
布尔型 |
boolean |
Boolean |
1 |
true/flase |
flase |
4 类型转换
- 隐式(自动)类型转换:从存储范围小的类型到存储范围大的类型。byte→short(char)→int→long→float→double short s=1;s=s+1; 报错,改成强转或者s+=1;
- 显示(强制)类型转换:从存储范围大的类型到存储范围小的类型。double→float→long→int→short(char)→byte。该类类型转换很可能存在精度的损失。
5 自动装箱与拆箱,==与equals
装箱:将基本类型用包装器类型包装起来,拆箱:将包装器类型转换为基本类型
Integer num = 9; 声明一个Integer对象,实际上调用了自动的装箱
Integer num = Integer.valueOf(9);
进行计算时隐含的有自动拆箱 System.out.print(num--);
----------------------------------------------------------------------- -- --------- --------------------------------
创建Integer对象的时候,如果数值在[-128,127]之间,便返回指向已经存在的对象的引用;否则创建一个新的Integer对象。
Integer.valueOf函数
public static Integer valueOf(int i) {
return i >= 128 || i < -128 ? new Integer(i) : SMALL_VALUES[i + 128];}
Integer、Short、Byte、Character、Long这几个类的valueOf方法的实现是类似的。