待整理主题:Java的8种基本数据类型与对应封装类型、拆箱、装箱
===================================================================================================
参考文章:
char:java中称为“字符型” 占2个字节
字符常量是用单引号括起的一个字符 且字符常量在内存中存储的是该字符在Unicode字符集中的排序位置,即整数
eg:char x='a'
内存x中存储的是字符a在Unicode字符集中的排序位置97 因此允许将上面的语句写成char x=97;
由此例可以得出以下结论:
1.要观察一个字符在Unicode字符集中的排序位置,必须使用int类型显示转换,例如:(int)'a'
2.同理,如果要得到一个0---65535之间的数所代表的Unicode表中相应位置上的字符也必须使用char型显示转换
===================================================================================================
参考文章
1)四种整数类型(byte、short、int、long):
byte:8位,用于表示最小数据单位,如文件中数据,-128~127
short:16位,很少用,-32768 ~ 32767
int:32位、最常用,-2^31-1~2^31 (21亿)
long:64位、次常用
- 注意事项:
- int i=5; // 5叫直接量(或字面量),即直接写出的常数。
- 整数字面量默认都为int类型,所以在定义的long型数据后面加L或l。
- 小于32位数的变量,都按int结果计算。
- 强转符比数学运算符优先级高。见常量与变量中的例子。
2)两种浮点数类型(float、double):
float:32位,后缀F或f,1位符号位,8位指数,23位有效尾数。
double:64位,最常用,后缀D或d,1位符号位,11位指数,52位有效尾数。
- 注意事项:
- 二进制浮点数:1010100010=101010001.0*2=10101000.10*2^10(2次方)=1010100.010*2^11(3次方)= . 1010100010*2^1010(10次方)
- 尾数: . 1010100010 指数:1010 基数:2
- 浮点数字面量默认都为double类型,所以在定义的float型数据后面加F或f;double类型可不写后缀,但在小数计算中一定要写D或X.X。
- float 的精度没有long高,有效位数(尾数)短。
- float 的范围大于long 指数可以很大。
- 浮点数是不精确的,不能对浮点数进行精确比较。
3)一种字符类型(char):
char:16位,是整数类型,用单引号括起来的1个字符(可以是一个中文字符),使用Unicode码代表字符,0~2^16-1(65535)。
注意事项:
不能为0个字符。
转义字符:
换行
回车 Tab字符 ” 双引号 表示一个
两字符char中间用“+”连接,内部先把字符转成int类型,再进行加法运算,char本质就是个数!二进制的,显示的时候,经过“处理”显示为字符。
4)一种布尔类型(boolean):true真 和false假。
5)类型转换: char–>
自动转换:byte–>short–>int–>long–>float–>double
强制转换:
- 会损失精度,产生误差,小数点以后的数字全部舍弃。
- 容易超过取值范围。
===================================================================================================
java里不是说char类型自动向int型转换吗?那为什么..
解释一:常量和变量的内存模型
解释二:char类型加减一个值是左右偏移
char a='a';
char b=a+18; //运行时程序报错了
===================================================================================================
short类型与int类型转换,float类型与double类型转换
===================================================================================================