Java的数据类型
Java中的数据类型分为基本类型与引用类型。基本数据类型分为4类8种。
基本数据类型
Java中基本类型数都有其对应的包装类型。
整型
整型属于有符号数(第一个bit位为0表示正整数,为1表示负整数)。
- byte
范围 | 默认值 | 包装类 |
---|---|---|
[-128,127] | 0 | Byte |
- short
范围 | 默认值 | 包装类 |
---|---|---|
[-32768,32767] | 0 | Short |
- int
整型的默认类型是int
范围 | 默认值 | 包装类 |
---|---|---|
[-2147483648,2147483647] | 0 | Integer |
- long
范围 | 默认值 | 包装类 |
---|---|---|
[–9,233,372,036,854,775,808,-9,233,372,036,854,775,807] | 0 | Long |
在定义时,需在后面添加l或L
long num = 87907857679947l;
字符型
- char
是一个16位Unicode字符。可表示0-65535。包装类为:Character
用单引号括起来表示:
‘a’ ‘b’ 如此
浮点型
- float
4字节,有效数字6-7位
在定义时,需在后面添加f或F(浮点型默认是double类型的)
- double
浮点型默认的类型是dounle
在定义时,需在后面添加d或D(由于是默认,一般可以不写)
8字节,有效位数为15-16位
布尔型
布尔类型在编译之后,会通过int类型来表示。
布尔数组用byte数组表示。
- boolean
默认值为false,只有两种取值,true和false。一般作为判断条件用于流程控制。
引用类型
Java的引用类型公有三种:
- 类
- 数组
- 接口
此三种类型默认值都是null
补充
包装类
基本数据类型并不是对象
包装类增强了Java面向对象的信息。他增加了一些方法,是的数据操作更加丰富。
自动拆装箱
按照正常的对象操作流程应该如此:
Integer i = new Integer(100);
//或
Integer i = Integer.valueOf(100);
int ii = i.intValue();
//自动装箱
Integer i = 1;
//自动拆箱
int ii = 2;
需要注意的是:
Integer i1 = 128;
Integer i2 = 128;
i1 == i2;//false
Integer i1 = 127;
Integer i2 = 127;
i1 == i2;//true
// 原因:
// 当Integer对象封装的数据在1byte的取值范围内,多个对象共享同一个对象空间,即就是同一个对象。----->128陷阱
其他方法
包装类还提供了其他的常用的方便的方法,更加丰富了数据的操作性.此处以int的包装类Integer举例简单说明
Integer.max();
Integer.min();
Integer.sun();
Integer.compare();
Integer.MAX_VALUE;
基本类型之间的转化
boolean类型不能与其他类型转换。其余可以转换。
自动类型转换
在存储范围小的类型向存储范围大的类型转换时,可自动进行转换。不需要编写代码。
byte short int long float double ------>依次增加
byte a = 44;l
short s = a;
//JVM会将变量b的值转换为short类型,然后赋给a实现自动类型转换
强制类型转换
存储范围大的类型赋值给存储范围小的类型时,需要强制类型转换。
double d = 9.87654;
int i = (int) d;
会出现精度损失:直接去掉高位做转换
做运算时,会整体转换为存储范围最大的类型,然后在做计算
double sum = 1 + 2 + 3.33f + 66l + 'e';
//转换为为double然后在做计算
//byte,short、char运算时,先转换成int后,再参与运算。