在数据处理时如果超出最大值,或最小值,会出现一个循环,即超过最大值,输出变成最小值,超出最小值,输出最大值
整形不构用用Long
默认的整形常量都是int型,那么可以为它追究字母L或者直接使用Long转换
eg:system.out.println(Integer.MAX_VALUES+1L)
范围大的数据类型可以自动转为范围小的数据类型,反过来,范围的要转为大的,则要强制转换,并考虑数据溢出
程序虽然支持数据转换处理,但是如果不是必须的情况下不建议转换
byte 类型特别要注意,保存的数据量很小-128~127
ava中,byte在内存中占一个字节,取值范围为何是-128~127?(-2^7~2^7-1)
计算机是用二进制来表示数据的,一个字节也就是8个比特位,其中最高位表示符号位(0正1负)
故byte的取值范围为1000 0000 到 0111 1111
在Java中,是采用补码来表示数据的
正数的补码和原码相同,负数的补码是在原码的基础上各位取反然后加1
1000 000是补码,减一然后按位取反得到其原码1000 0000
(减一得 0111 1111,再按位取反得 1000 0000)
因为是负数,所以最小的byte值为-2^7=-128
0111 1111的十进制为2^7-1=127(等比序列求和)
byte是一个字节,共有2^8=256种可能性,也就是-128~127
其他基本数据类型同理
char没有负值,占两个字节,所以取值范围是0~2^16-1(65535)
比如 byte num=20;
正常来讲在java程序里面20这个数字应该是int型,但是在为byte赋值的时候并没有并没有因为是int型而发生类型转换,java对byte进行 了特殊处理即,没超过byte范围的常量可以自动由int变为byte,如果超过了则要进行强制转换。
总之整形优先考虑Long 然后才是int
使用小数的时候直接使用double来定义
type<int<Long<double 范围由小到大
所有 数据类型自动转换的时候都是 小类型自动转为大类型
10/4=2 是因为int型不保存小数点后的数
计算的时侯选择的数据类型将直接影响小数点后的数。
在任何编程语言中,字符都可以与int进行互转,也就是字符中所描述的内容可以通过int获取其对应的系统编码
因为字符型变量在内存中是用ASCII值保存的,也就是说是以整数形式保存的,所以可以认为是通用的,但是ASCII码字符只有128个(扩展的ASCII表有256个字符),也就是说,只要一个字节就可以表示所有的ASCII字符了,所以字符型变量占1字节的空间,而整弄变量占的空间长度则和数据总线的宽度一致,也就是说,在32位平台上,它占4字节,在如今的64位平台上,它占8字节。如‘A’