Java的特点
- 1.面向对象
- 2.跨平台
- 3.简单易学
- 4.内存管理
JVM、JDK、JRE的关系
- JVM:Java虚拟机,它负责把字节码文件进行编译并运行,是Java具有跨平台性的关键所在。它还有内存管理,垃圾回收等功能。
- JDK:JDK是Java开发工具包,它包含了JVM,编译器,调试器等开发工具,还包含一系列类库。它提供了Java程序编译,调试,运行所需要的工具和环境。
- JRE:是java运行时的最小环境,它包含JVM和一组Java类库,用于支持java运行。
数据类型
八种基本数据类型:
整型 :byte,short,int,long
浮点型 :float,double
字符型 :char
布尔类型 :boolen
这八种基本类型都有对应的包装类分别为:Byte、Short、Integer、Long、Float、Double、Character、Boolean
基本类型和包装类型的区别
1.用途 :除了定义一些常量和局部变量之外,我们在其他地方比如方法参数、对象属性中很少会使用基本类型来定义变量。并且,包装类型可用于泛型,而基本类型不可以。
2.存储方式 :基本数据类型的局部变量存放在 Java 虚拟机栈中的局部变量表中,基本数据类型的成员变量(未被 static 修饰 )存放在 Java 虚拟机的堆中。包装类型属于对象类型,我们知道几乎所有对象实例都存在于堆中。
3.占用空间 :相比于包装类型(对象类型), 基本数据类型占用的空间往往非常小。默认值:成员变量包装类型不赋值就是 null ,而基本类型有默认值且不是 null。
4.比较方式:对于基本数据类型来说,比较的是值。对于包装数据类型来说,比较的是对象的内存地址。所有整型包装类对象之间值的比较,全部使用 equals() 方法。
装箱和拆箱
- 装箱:把基本数据类型转化为对应的包装类
- 拆箱:把包装类型转化为基本数据类型
Integer和int 的区别
- 基本类型和引用类型:int为基本数据类型,它们是预定义的,不需要实例化就可以使用。而Integer是引用类型,需要实例化。也就是说使用int 来存储一个整数时没有额外的内存分配
- 自动装箱和拆箱:Integer可以实现自动拆箱和装箱,当把Integer类型的值赋值给int类型时会自动进行拆箱,把int类型的值赋值给Integer类型时,会自动装箱
- 空指针异常:int类型可以赋0,而Integer不可以赋空值