数据类型 占用空间大小 默认值
byte 1 0
short 2 0
int 4 0
long 8 0L
1.java语言当中的整数型字面值被默认当作int类型来处理。要让这个整数型字面值当成long类型来处理的话,需要在整数型字面值后面添加L。
2.Java语言当中的整数型字面值有三种表示方式:
用十进制表示【默认缺省】 10 // 10
用八进制【需要以0开始】 010 // 8
用十六进制【需要以0x表示】0x10 // 16
eg:整数型字面值以0开头,后面那一串数字就是八进制形式
小容量可以转化成大容量,称为自动类型转换机制
int->long
long z = 2147836784;
2147836784被当成int类型4个字节处理,但是这个字面值超出了int取值范围,故出错
long z = 2147836787L ;// 对的
大容量转换成小容量需要强制类型转换,不能直接赋值
强制类型转换需要加强制类型转换符,运行阶段可能造成精度的损失
只要没有超过byte取值范围的,整数型类型字面值可以转换成byte类型的变量。
byte b = 127; //可以编译通过‘
byte b1 = 128; //不可以
纠正错误:byte b1 =(byte) 128; //可以
原码 补码 反码的区别
计算机只能以补码的形式存储数据
正数的补码:和原码相同
负数的补码:负数的绝对值对应的二进制码所有的二进制位取反,再加1
求-128的补码有点难懂当一个整数字面值没有超过byte,short,char的取值范围,这个字面值可以直接赋值给byte,short,char类型的变量。
关于浮点型数据类型
float 单精度 4个字节
double 双精度 8个字节
double的精度太低,不适合做财务软件。要求精度高,所以java为程序员准备可精确度更高的类型(引用数据类型)java.math.BigDecimal。
在java语言当中,所有的浮点型字面值,默认被当成double类型来处理。
要想该字面值当成float类型来处理,需要在字面值后面添加F/f
float f = 6.1;
// 6.1是double类型的字面值
// f是float类型的变量
大容量转换成小容量需要加强制转换符
解决方案:
1.第一种方式:强制类型转换
float f = (float) 6.1
2.第二种方式:没有类型转换
float f = 5.1f;
注意:double和float在计算机内部二进制存储的时候都是近似值,在现实世界中有一些数字是无线循环的。
布尔类型boolean经常使用在逻辑运算和条件控制语句当中。
1.八种数据类型当中除了布尔类型之外,剩下的7种类型之间都可以相互转换
2.小容量向大容量转换,称为自动类型转换,容量从小到大排序:
byte < short < int < long < float char < 注意:任何浮点类型不管占用多少个字节,都比整数型容量大 char和short可表示的种类数量相同,但是char可以取更大的正整数 3.大容量转换成小容量,叫做强制类型转换,需要加强制类型转换符,程序才能编译通过,但在运行阶段可能会损失精度 4.当整数字面值没有超过byte、short、char的取值范围,可以直接赋值给byte、short、char类型的变量 5.byte,short,char混合运算时,各自先转换成int类型在做运算。 6.多种数据类型混合运算,先转换成容量最大的那种类型在做运算。 二. 总结 * 标识符 * 关键字 * 字面值 * 变量 * 数据类型



