持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天。
先来一张数据类型的图,大致了解一下。
基本数据类型
基本数据类型又叫内置类型,是可以在栈直接分配内存的。
注意:java 是基于 JVM 的,所以其所占字节固定与机器平台无关,所有地方统一占用内存大小由 JVM 自己实现。
数值型
整型:都是有符号的类型
-
byte: 1字节(8bit);
实际上,JVM中是将其当做int看 的,也就是事实上是占用了32位,4字节的,所以其运算效率和int没区别,short也一样。 之所以要有byte/short类型
-
short:2字节(16bit)
-
int: 4字节(32bit)
-
long:8字节(64bit)
浮点型
- float: 4字节(32bit),单精度
- double:8字节(64bit),双精度
字符型
- char: 2字节(16bit),表示一个字符,可以是汉字。
布尔型
值:true,false
引用数据类型
也称对象变量类型,复合数据类型,包含类、接口、数组(除了基本类型外,就是引用类型)。引用类型与基本类型最大的区别在于:引用类型存储的是一个指针,指向数据地址,但是不能直接修改引用类型的数据。
数据类型转换
自动类型转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。 转换从低级到高级
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
数据类型转换规则:
-
不能对boolean类型进行类型转换。
-
不能把对象类型转换成不相关类的对象。
-
在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
-
转换过程中可能导致溢出或损失精度
-
浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
强制类型转换
转换格式:
(type)value
- type是要强制类型转换后的数据类型
示例:
public class QiangZhiZhuanHuan{
public static void main(String[] args){
int i1 = 123;
byte b = (byte)i1;//强制类型转换为byte
System.out.println("int强制类型转换为byte后的值等于"+b);
}
}
相关默认值
- 整数的默认类型是 int
- 小数默认是 double 类型