一、分类介绍
java的数据类型分为:基本数据类型、引用数据类型 两大类;
布尔型:boolean
整数型:byte、short、int、long
浮点型:float、double
字符型:char
数据类型 | 代表含义 | 默认值 | 取值 | 在内存中占用的字节数 | 包装类 |
boolean | 布尔型 | false | 0(false) 到 1(true) | 1个字节(8位) | Boolean |
char | 字符型 | '\u0000'(空) | '\u0000' 到 '\uFFFF' | 2个字节(16位) | Character |
byte | 字节型 | (byte)0 | -128 到 127 | 1个字节(8位) | Byte |
short | 短整数型 | (short)0 | -2^15 到 2^15-1 | 2个字节(16位) | Short |
int | 整数型 | 0 | -2^31 到 2^31-1 | 4个字节(32位) | Integer |
long | 长整数型 | 0L | -2^63 到 2^63-1 | 8个字节(64位) | Long |
float | 单浮点型 | 0.0f | 1.4e-45 到 3.4e+38 | 4个字节(32位) | Float |
double | 双浮点型 | 0.0d | 4.9e-324 到 1.798e+308 | 8个字节(64位) | Double |
byte a = 100;
short s = 1000;
int a = 100000;
long a = 100000L; // 错误写法:long a = 100000; //必须写为 long a = 100000L; 或者 long a = (long)100000;
float f1 = 234.5f;
double d1 = 123.4;
二、包装类
1、包装类概述
基本数据类型是不具备对象的特征的,不能调用方法,而且基本数据类型不能存入集合中,
有很多时候我们需要以对象的形式操作某项功能,比如说获取哈希值(hashCode)或获取类(getClass)等。
所以就需要将基础数据类型实例封装为 Java 对象,使其具有了对象的属性和方法。
而且原始类型不能为 null,但包装类可以 为null。包装类也可用于实现多态性。
2、包装类的特性
- 功能丰富:作为一个对象具有属性和方法。
- 可定义泛型类型参数:包装类可以定义泛型,而基础类型不行。
- 序列化:因为包装类都实现了 Serializable 接口,所以包装类天然支持序列化和反序列化。
- 类型转换:包装类提供了类型转换的方法,可以很方便的实现类型之间的转换。
- 高频区间的数据缓存:此特性为包装类很重要的用途之一,用于高频区间的数据缓存。
3、基本类型与包装类的区别
①存储位置不同:
基本数据类型直接将值放在栈中;
包装类型是把对象放在堆中,然后通过对象的引用来调用他们 ;
②初始值不同:
int的初始值为 0 、 boolean的初始值为false ;
包装类型的初始值为null ;
③使用方式不同:
基本数据类型直接赋值使用就好;
在集合如 coolectionMap 中只能使用包装类型;
4、基本类型与包装类的相互转换
基本数据类型转化为包装类
格式:包装类 变量名 = new 包装类(数据);
包装类转化为基本数据类型
格式:基本数据类型 变量名 = 包装类变量名.xxxValue();
自动装箱:基本数据类型——>包装类
public class Main {
public static void main(String[] args) {
int num = 1;
//自动装箱
Integer integer = num;
System.out.println(integer); //1
boolean b1 = true;
//自动装箱
Boolean bool = b1;
System.out.println(bool); //ture
}
}
自动拆箱:包装类——>基本数据类型
public class Main {
public static void main(String[] args) {
int num = 1;
Integer integer = num;
//自动拆箱
int num2 = integer;
System.out.println(num2); //1
}
}
5、常用方法
以 Integer 为例:
valueOf(String s); 返回保存指定的String值的Integer对象。简单说就是把string对象转成integer
parseInt(String str); 返回包含在由str指定的字符串中的数字的等价整数值
compareTo(Integer anotherInteger); 在数值上比较两个Integer对象(等于返回0,大于返回正数,小于返回负数
equals(Object Integerobj); 比较此对象与指定对象是否相等
toString(); 转成string