Java语言学习二(Java基本数据类型)

计算机是处理逻辑运算的,计算机必须能够正确地表示数据,计算机元器件只能区分高低电平或者有无电压等电气物理体系,所以计算机每条线路同一时刻只能表示两种状态,也就是常说的计算机只能表示0/1二进制数据,而且计算机CPU只能作加法运算,其他的运算必须转化为加法运算实现。在学习Java基本数据类型前有必要学习一下计算机的基本数值。

计算机数值基础

常用的数值有二进制、八进制、十进制、十六进制等等

二进制数据中只有0和1,每位逢2进1。在计算机中二进制数据归档最高位是符号位,0代表正数,1代表负数。
比如(在此都使用一个字节表示,也就是8位二进制数据)
在这里插入图片描述
在这里插入图片描述
我们发现计算机在使用二进制进行减法运算时结果是错误的。
计算机数学家们为了解决这个问题,发明二进制数的原码,反码和补码,使用补码可以正确地将减法转化为加法,最终在计算机内部通用使用二进制的补码存储数据。

原码
最高位为符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制表示。

如:

3 的原码为0000 0011
-3的原码为1000 0011

反码
正数的反码与原码一致;

负数的反码是对原码按位取反,只是最高位(符号位)不变。

如:

3 的反码为0000 0011
-3的反码为1111 1100

补码
正数的补码与原码一致;

负数的补码是该数的反码加1。

如:

3 的补码为0000 0011
-3的补码为1111 1101

3-3=3+(-3)=(0000 0011)+ (1111 1101)=0(补码)
0的原码=0的补码=0

在这里插入图片描述
以2-2为例说明补码运算

在这里插入图片描述
结论:计算机内部数据都是以二进制的补码形式存储的

Java数据类型

任何语言都需要设计几种基本的数据类型,Java语言定义了八中基本数据类型,这八种数据类型可以存储不同长度的数据,都是以二进制的形式存储的。
|

数据类型 长度
byte 8位(1字节)
boolean 8位(1字节)
short 16位(2字节)
char 16位(2字节)
int 32位(4字节)
float 32位 (4字节)
long 64位(8字节)
double 64(8字节)

在这里插入图片描述
其他数据类型大小范围与存储类似byte
boolean
最小值:-2^8
最大值:2^8-1

char || short
最小值:-2^16
最大值:2^16-1

int||float
最小值:-2^32
最大值:2^32-1

long||double
最小值:-2^64
最大值:2^64-1

在Java代码中默认的一个整数是int类型,默认一个小数是double类型
在这里插入图片描述
由于数据类型存储长度不同,在为不同数据类型赋值时需要显示地指明数据类型,如下代码
在这里插入图片描述
在这里插入图片描述
修改为显示地转化赋值
在这里插入图片描述
编译结果是正确的
那么变量b2越界,它的值是什么?
在这里插入图片描述
在这里插入图片描述
答案是-128,原因如下:
在这里插入图片描述
Java基本数据类型如果越界,按照模运算,跳到数值的另一端。

Java的基本数据类型byte,short,char,int,long存储都是相同的,根据二进制不同的位权转换为十进制,而float,double采用科学计数法存储数据,使用自然数e作为底数,包含指数部分。所以虽然存储4字节的float类型,存储数据范围远比存储8字节的long类型更广泛。

发布了189 篇原创文章 · 获赞 34 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qixiang_chen/article/details/104329498