数据类型
数据类型的分类
在Java语言中,数据类型主要分为两大类
- 基本数据类型
byte, short, int, long, float, double, boolean, char - 引用数据类型
数组, 类, 接口, 枚举, 标注, String
进制相关
常用进制
- 在计算机的底层采用0和1组成的二进制序列进行数据的描述.<u>逢二进一</u>
- 二制的最高位用于代表符号位: 0-非负数, 1-负数
进制之间的转换
- 正十进制转为二进制
- 正二进制转为十进制
负十进制转为二进制
- 先将十进制的绝对值转换为二进制
- 然后进行按位取反再加1(补码)
负二进制转换为十进制的方式
- 先减1,再按位取反
- 合并为十进制整数后添加负号
单个字节(byte)表示的整数范围
在计算机中单个字节表示八位二进制位,其中最高位代表符号位:0-非负数,1-负数
- 非负数表示范围 0000 0000 ~ 0111 1111 => 0 ~ 127 => 0 ~ 2^7-1
- 负数表示范围 1000 0000 ~ 1111 1111 => -127 ~ -1 => -2^7-1 ~ -1
所以单字节表示的整数范围是 -2^7 ~ 2^7-1, 即 -127 ~ 128
基本数据类型表示的整数范围
byte short int long float double boolean char
整数类型
byte short int(荐) long
- byte在内存空间中占1个字节(8位二进制位),表示范围是 -2^7~2^7-1. 次幂是7,也就是8-1
- short在内存空间中占2个字节(16位二进制位),表示范围是 -2^15~2^15-1. 次幂是15,也就是16-1
- int在内存空间中占4个字节(32位二进制位),表示范围是 -2^31~2^31-1. 次幂是31,也就是32-1
- long在内存空间中占8个字节(64位二进制位),表示范围是 2^63~2^63-1. 次幂是63,也就是64-1
在Java程序中,直接写出的整数数据叫做 <u>直接量/字面量/常量</u>, 默认为int类型.
若希望表达更大的直接量,则在直接量的后面加上L即可
浮点类型
float double(荐)
- float在内存空间中占4个字节, 叫做单精度浮点数,可以表示7位有效数字
- double在内存空间中占8个字节,叫做双精度浮点数,可以表示15位有效数字
Java程序中直接写出的小数数据叫做直接量,默认为double类型
若希望表达float类型的直接量,则需要在直接量的后面加上f或者F
布尔类型
boolean 数值只有:true和false
布尔类型在内存空间中所占大小没有明确的规定,可以认为是1个字节
字符类型
char 用于描述单个字符的数据类型.如'a','中'
- char在内存空间中占2个字节并且没有符号位. 表示的范围是0~2^16-1,即0~65535
- 由于现实生活中很少有数据能够被单个字符描述,因此以后开发中更多的使用由多个字符串起来的字符串,使用
String
类型加以描述 - 计算机的底层只识别0和1组成的二进制序列.对于'a'这样的图案来说不满足该规则, 因此该数据无法直接在计算机中存储,但现实生活中存在这样的图案数据需要计算机存储. 为了使得该数据能够存储起来就可以给该数据指定一个编号, 然后将编号存储起来即可. 该编号就叫做
ASCII
- 常用字符的ASCII码: '0' --> 48; 'A' --> 65; 'a' --> 97; 空格 --> 32; 换行符 --> 10
- Java字符类型采用Unicode字符集编码. Unicode是世界通用的定长字符集, 所有的字符都是16位
- 常用的转义字符是: " --> "; ' --> '; \ --> ; t 代表制表符; n 代表换行符
基本数据类型之间的转换
基本数据类型之间的转换方式: 自动类型转换 / 强制类型转换
自动类型转换
主要指: 从小类型到大类型之间的转换
强制类型转换
主要指: 从大类型到小类型之间的转换
语法格式: 目标类型 变量名 = (目标类型)源类型变量名;
强转有风险, 操作需谨慎
典型例题
将128转为byte类型的结果是?
short s1 = 128;
byte b1 = (byte)s1;
System.out.println("b1 = " + b1) // b2 = -128
// 这里将128转换成byte类型,结果为-128
解析:
首先, byte类型可表示的整数范围是: -128~127. 而这里的整数128已经超过了byte类型可表示的范围. 所以,在转换成byte类型之前,需要先转换为二进制(这里写成16位的进制)
128 => 0000 0000 1000 0000
因为byte类型只有8个二进制位,所以默认取低8位,也就是 1000 0000
1000 0000最高位1代表这个数是负数.
负数转为十进制的过程:二进制数减1,然后按位取反,再转十进制,再添加一个负号
1000 0000 => 0111 1111 => 1000 0000 => -128
所以128转为byte类型的结果是-128
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。