数据类型
在Java中数据类型分为两类,基本数据类型和引用数据类型;基本数据类型8种:整型(4种),浮点型(2种),字符型以及布尔类型;除此之外都是引用类型,有数组,类,接口等(在后续会说明);
1.1整数类型
是指不带小数的数据类型,其表示形式有二进制,八进制,十进制,以及十六进制;在Java中整型变量都是默认带符号的;
byte类型
byte 类型 即字节类型在内存中占1个字节(8bit位)因此其范围是 -2^7-----2^7-1;因为是有符号的即它的二进制中第一位是符号位其他7位是数值位;
short 类型
short 类型即短整型在内存中占2个字节(16bit位) 其范围是 -2^16----2^16-1;
int 类型
int 类型是默认的整型,其在内存中占4个字节(32bit位)其范围是 -2^32----2^32-1;这里与C语言不同的是Java语言不看是多少位的平台int等占内存大小永远是固定的,这也就是Java跨平台的一个原因;
long 类型
long 类型即长整型在内存中占8个字节(64bit位)范围是 -2^64----2^64-1;注意long类型在使用的时候需要在其后面l或L;建议加L因为l不易与数字1区分!
1.2浮点类型
浮点类型又称实型,是带小数的十进制数;
float类型
float 类型即单精度浮点型,在内存中占4个字节(32个bit位)其在使用时在其后面要加上f或F;
float = 10.0F;或float = 10.0f;
double类型
double类型即双精度浮点型,在内存中占8个字节(64个bit位),其在使用的时候可以在后面加d或D也可以不加,因为 double是默认的浮点型;
double b = 10.0;即可!
1.3字符类型
字符类型顾名思义就是放字符的;什么是字符?简单说就是你能从键盘敲上去的都叫字符。
char类型
char类型在内存中占2个字节(一个汉字2个字节)这里一定要与C语言的char分清楚,C中char在内存中占1个字节!注意char类型中只能放一个字符!
char a = ' A '; char b = 98;
1.3.1转义字符
以' \ '开头的一类字符,称为转义字符!
常见的转义字符:
' \r ' 回车 ' \n '换行 ' \t '水平制表 ' \' '一个单引号........这与C语言中的一样!
1.4布尔类型
boolean类型
boolean用来表示逻辑值-->真或假;在内存中占的大小没有确定,有的书上说占1个字节。其返回值是true或flase;这里也要与C语言的真假分清楚,C中的0为假,非0为真。Java中不能用0与非0代替true与flase;boolean类型常与流程控制语句,判断语句,while,do....while连用;
boolean b = false;//注意布尔类型未初始化默认是flase!
2.基本数据类型转换
8种数据类型除了布尔类型,其他都能够互相转换,转换时分为自动类型自动类型转换和强制类型转换;
2.1自动类型转换
整型,浮点型,字符等都可以进行混合运算,在运算中不同类型的数据先转换为同一数据类型(一般是表示范围最大的)然后在进行转换运算。
各个数据类型表示的范围大小顺序为:byte-->short-->char-->int-->long-->float-->double
自动转换的规则:表示范围小的数据类型可以自动转换为表示范围大的数据类型,其表达式的结果向范围大的数据类型看齐;
例子如下:
byte与short----->short
short与int ------>int
char与int ------>int
int 与float----->float
int,float与double------>double
.......
这里说的一点是,short,byte,char等小于4个字节的只要进行参与运算其结果就是int 类型!原因是这里发生了隐式中的整型提升与C语言的整型提升一样;
2.2强制类型转换
强制类型的转换规则:表示范围大的数据要转换成范围小的数据,该转换有可能丢失数据;
强制类型转换格式:
(强制转换类型) 变量名; int a = ( int )12.9;
上面的double强转为int后的结果为12;0.9的精度丢失了!在实际开发中要想清楚了在转否则会产生问题;
下面看一些代码:
解释:
运行结果:
经我检查结果无误!