计算机处理的基本元素是数据,数据有不同的数据类型。编译器根据数据类型对应的取值范围来为其分配内存空间。
1.基本数据类型分类
Java定义了两大类数据类型,基本数据类型和引用数据类型,如图
而整数类型就分为字符型,短整型,字节型,整型,长整型
浮点类型包括浮点型和双精度型
JAVA中一共有八种基本数据类型,分别是:byte、short、int、long、float、double、char、boolean。
需要注意的是,Java基本数据类型所占储存空间的二进制位数是固定的,不会因为硬件平台以及操作系统的不同而改变。这种特性使得Java语言具有平台无关性和更好的可移植性
各种基础数据类型所占字节数的大小 (单位Byte)
整数型数据 byte 1 short 2 int 4 long 8
小数型数据 float 4 double 8
字符型数据 char 2
布尔型数据 boolean 1
在java中,定义整数型数据的时候,如果字面量是十进制的数值,那么java会自动默认为int型。 也就是说:int short byte long 这几个,只要后面跟的是十进制的整数,那么它们都被默认为int型
转义符
Java还定义了一种以" \ “开头的字符序列,称之为转义符,指那些难以用一般字符来表示的特殊字符。” \ "改变了紧接其后的那个字符的原始含义。要在前面一个字符前加上这个 \ ,这样才能使编译器知道那个字符只是一个普通的字符
关于计算机内存中储存的二进制
记住,在计算机内存存储的二进制都是以补码的形式进行存储,在内存中第一位表示符号位,0表示正,1表示负 什么是补码?
对于一个正数来说,它的原码、反码、补码都一个样
如:10的原码:00000000 00000000 00000000 00001010 对于一个负数来说,它的原码、反码、补码是什么样子的、
原码很简单,就是一个整数的二进制表示,第一位是符号位
如:-1的原码:10000000 00000000 00000000 00000001
反码:符号位不变,其他位取反也就是说,原来是0的要变成1,是1的要变成0,记住符号位不变
-1的反码:11111111 11111111 11111111 11111110
补码:反码+1
-1的补码:11111111 11111111 11111111 11111111
字符转换
二元运算不仅存在于两个类型相同的数据之间,将小取值范围低精度数转换为大取值范围高精度数,这一过程称之为拓宽类型转换,反之称为缩窄类型转换
Java默认采取拓宽类型转换
1)转换的规则是如果存在double型,则按double型计算
2)否则,如果存在float型,则按float型计算
3)若存在long型,就按long型计算
4)不然就按int型计算
char类型可以转换为int型,而int型却不能随意转换为char类型
因为int型为4个Byte char为2个Byte
int型和long型转换为float型和double型时可能会丢失精度
基础数据类型,小转大,在小的一方的取值范围内,可以自动转换,也叫自动类型转换。大转小,要强转,也叫作强制类型转换
字符型与数值型转换
char型是16位的无符号数,可以和任意一种数值类型相互转换。
1)整数转化为字符
整数转换为char型数据时,只保留数据的低16位,大于16位的部分被忽略,小于16位的高位补0(高位低位问题可以参考大小端序)
2)浮点数转化成字符
浮点数转换成char型数据时,首先将浮点数转换为int型,然后将这个int型数值转换成char型
3)字符型转换成数值型
反过来,将char型数据转换成数值型时,得到的结果时这个字符的Unicode编码对应的数值,转换成byte型时,结果是低八位
4)强制类型转换
在0~0xFFFF之间的任何一个数值都可以直接转换成char型数据