1、java语言的数据类型
java语言的数据类型分为原始数据类型(基本类型)和引用数据类型(复合类型)
基本数据类型包括以下8种:
- 整数类型:byte、short、int、long
- 浮点类型:float、double
- 字符类型:char
- 布尔类型:boolean
引用数据类型主要包括3中:
- 类class
- 接口interface
- 数组Array
2、基本数据类型
2.1、整数类形
java定义了四种整数类型,它们都是带符号的,也就是取值范围有正有负。
类型 | 字节数 | 二进制位 | 取值范围 |
---|---|---|---|
byte字节型 | 1个字节 | 8 | -128~127(-[2^ 7]~2^7-1) |
short短整形 | 2个字节 | 16 | -32768~32767(-[2^ 15]~2^15-1) |
int整形 | 4个字节 | 32 | -2147483648~2147483642(-[2^ 31]~2^31-1) |
long长整形 | 8个字节 | 64 | -9223372036854775808~9223372036854775807(-[2^ 63]~2^63-1) |
细节说明:当我们定义一个函数并赋值为一个整数时,一般情况下默认为int类型。
2.2、浮点类型
java定义两种浮点类型,即double和float;
类型 | 字节数 | 二进制位 | 取值范围 |
---|---|---|---|
float单精度 | 4个字节 | 32 | 1.4E-45~3.4028235E38 |
double单精度 | 8个字节 | 64 | 4.9E-324~1.7976931348623157E308 |
细节说明:这里需要提一下的是,double类型的小数点后最多可保存16个小数,而float最多可保存7个小数。另外,当我们定义了一个float的时候,在赋值是如果是一个小数的话必须在小数的最后加上f或F,因为一个小数默认为double类型,double类型的数据赋值给float类型,在java里面是不允许的,如果一定要将double类型赋值给float的话,必须要使用强制类型转换,
如float f = (double)3.14;
2.3、字符类型
char用来定义字符型,java使用Unicode码代表字符,比如字符a是用97来表示的。不同于C语言的ASCII码,java中的char是占据2个字节的,所以它是16位。因为char无符号,所以取值范围是0-2^16-1(0~65535)
2.4、布尔类型
boolean用来定义布尔类型,只包含true和false两个值,多用于流程控制语句的判断。
3、基本数据类型的默认初始值
3.1、基本数据类型的默认初始值
序号 | 数据类型 | 默认值 |
---|---|---|
1 | byte | 0 |
2 | short | 0 |
3 | int | 0 |
4 | long | 0 |
5 | float | 0.0 |
6 | double | 0.0 |
7 | char | /u0000(空字符,不是null) |
8 | boolean | false |
4、整形的取值范围验证
这里我们用byte来进行举例说明:
在前面我们提到了byte占据一个字节,也就是8个二进制位,现在我们定义一个byte的数据byte b = 127(byte的最大值)
;那么,它的二进制数据是多少呢?我们来进行一个换算(详细的换算过程请参考这篇进制的转换)
127:
127 / 2 = 63 ...1
63 / 2 = 31 ...1
31 / 2 = 15 ...1
15 / 2 = 7 ...1
7 / 2 = 3 ... 1
3 / 2 = 1 ...1
1 / 2 = 0 ...0
byte10的换算后的二进制数据为:011111110,二进制的第一个进制位为符号位,用来表示二进制数的正负,0表示正,1表示负,那么,按道理来说,8位的二进制数最大不是应该为:01111111吗?为什么会是011111110呢?这是因为,在正数部分将0也算进去了,所以我们需要-1,故最大数就是011111110,转换换成十进制为127,您也可以将二进制的最大数转换成十进制进行验证
进制的转换请参考这篇:进制之间的相互转换;
这一期到此就结束了,下一期主要是对类型转换的介绍,如果这篇文章对您有帮助的话,还请点赞、关注支持一下,非常感谢您的观看!!!