1、数据类型
1.1、数据类型用来声明变量,在运行过程中根据不同的数据类型分配不同大小的空间。
1.2、数据类型在java语言中包括两种:
第一种:基本数据类型? ? ? 可分为4大类8小种
? ? ? ? ? ? ? 第一类:整数型
? ? ? ? ? ? ? 第二类:浮点型
? ? ? ? ? ? ? 第三类:布尔型
? ? ? ? ? ? ? 第四类:字符型? '? '
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?8小种:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? byte,short,int,long
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? float,double
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? boolean
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? char
第二种:引用数据类型
? ? ? ? ? ? ? ?字符串型String属于引用数据类型。它不属于基本数据类型的范畴
1.3、计算机存储单位
1字节 = 8bit? /? ? 1byte = 8bit
1KB = 1024byte? ? ? ?1MB = 1024KB? ? ? ?1GB = 1024MB? ? 1TB = 1024GB
1.4、数据类型的取值范围?
byte:[-128~127]共可以标识256个不同的数字,8个比特位,所以byte可以存储的最大值是: 01111111
short:[-32768~32767]
int:[-2147483648~2147483647]
char:[0~65535]
short和char其实容量相同,只是char表示文字,而文字没有正负之分,所以char可以表示更大的数字。
1.5、对于8种基本数据类型来说:
前7个计算机表示起来比较容易,因为他们都是数字。对于char类型比较麻烦,文字不能直接通过自然算法转换成二进制
ASCII码:'a' ---->97? ? ?'A' ----> 65? ? ? ?'0'---->48
1.6、详解整数类型
任何情况下,整数型的“字面量/数据”默认被当作int类型处理,如果希望该整形字面量被当作long类型来处理,需要在“字面量”后面添加? ?l/L。
小容量可以直接赋值给大容量,称为自动类型转换。大容量不能直接赋值给小容量,需要使用强制类型转换符进行强转。
java中有一个语法规则:当这个整数型字面量没有超出byte/short的取值范围,那么这个整数型字面量可以直接赋值给byte/short类型的变量。
day-07?
1、二进制源码反码补码
计算机在底层存储数据的时候,一律存储的是“二进制的补码形式”,因为补码形式效率最高。
对于一个正整数来说,二进制原码、反码、补码完全相同;对于一个负数来说
byte = -1? ?
原码:10000001
反码:符号位不变,其他位取反? 11111110
补码:反码+1
2、byte、short、char的混合运算
在做混合运算时候,各自先转换成int再做运算
note:多种数据类型做混合运算的时候,最终的结果类型是“最大容量”对应的类型
3、关于java语言中的浮点型数据(默认当作double)
float? 4个字节 单精度
double 8个字节? 双精度
专门使用在财务方面:java.math.BigDecimal属于引用数据类型
任意一个浮点型都比整数型空间大float容量>long容量
4、基本数据类型转换规则
第一条、八种基本数据类型中,除boolean类型不能转换,剩下7种类型之间都可以进行转换;
第二条、如果整数型字面量没有超出byte、short、char的取值范围,可以直接将其赋值给byte、short、char类型的变量;
第三条、小容量向大容量转换成为自动类型转换,容量从小到大的排序位byte<short(char)<int<long<float<double
第四条、大容量转小容量,称为强制类型转换,编写时必须添加“强制类型转换符”
第五条、byte、short、char在做混合运算时候,各自先转换成int再做运算
第六条、多种数据类型做混合运算的时候,最终的结果类型是“最大容量”对应的类型