阅读完后:
- 什么是整型字面量【掌握】
- 什么是二进制、八进制、十进制、十六进制以及它们的转换【了解】
- 什么是浮点字面量【掌握】
- 浮点字面量的表现形式【掌握】
- 以下划线分隔的字面量【掌握】
前言
数字字面量可以分为整型字面量和浮点型字面量,当我们需要这些类型的变量或者常量赋值时,我们如何表示这些数字的值呢?
整型字面量
为一个整型变量赋值,可以使用二进制、八进制、十进制、十六进制表示整型字面量,比如 100、200、0b11000、0123、0x1590 这些就是整型字面量。通常十进制是编程中用的最多的记数系统。接下来,我们开始学习这些整型字面量,
二进制
二进制是以 2 为基数的计数系统,每位取值是 0 或 1 的 2 个数值,对计算机来说,由 0 和 1 组成的值最简单,也是重要的计算部分。
在二进制中,逢二进一,二进制字面量必须以 0B 或 0b 开头,每位称为一个比特,8 比特为一个字节。例如:从 0~5 开始依次为0、1、10、11、100、101。0b101 表示十进制值为 5、0b11111111 表示十进制值为 127。
二进制转换为十进制
0b0、0b1、0b10、0b11、0b100、0b101 分别表示十进制数 0、1、2、3、4、5,计算方式如下:
0b0 转换为十进制数:0 x 2
= 0
0b1 转换为十进制数:1 x 2
= 1
0b10 转换为十进制数:1 x 2
+ 0 x 2
= 2
0b11 转换为十进制数:1 x 2
+ 1 x 2
= 3
0b100 转换为十进制数:1 x 2
+ 0 x 2
+ 0 x 2
= 4
0b101 转换为十进制数:1 x 2
+ 0 x 2
+ 1 x 2
= 5
示例代码如下:
// 二进制开头为 0b
int myInt1 = 0b0;
int myInt2 = 0b1;
int myInt3 = 0b10;
int myInt4 = 0b11;
int myInt5 = 0b100;
int myInt6 = 0b101;
System.out.println(myInt1); // 输出:0
System.out.println(myInt2); // 输出:1
System.out.println(myInt3); // 输出:2
System.out.println(myInt4); // 输出:3
System.out.println(myInt5); // 输出:4
System.out.println(myInt6); // 输出:5
八进制
八进制是以 8 为基数的计数系统,每位取值是 0 和 7之间的 8 个数值(依次为 0、1、2、3、4、5、6、7)。
在八进制中,逢八进十,八进制字面量必须以 0 开头。例如,010 表示十进制值为 8、0123 表示十进制值为 83、-0123 表示十进制值为 -83。很显然,八进制表示法比较容易混淆,所以建议最好不要使用八进制数。
八进制转换为十进制
075 和 011011 分别表示十进制数 61 和 577,计算方式如下:
075 转换为十进制数:7 x 8
+ 5 x 8
= 61
01101 转换为十进制数:1 x 8
+ 1 x 8
+ 0 x 8
+ 1 x 8
= 577
示例代码如下:
// 八进制开头为 0
int myInt1 = 075;
int myInt2 = 01101;
System.out.println(myInt1); // 输出:61
System.out.println(myInt2); // 输出:577
十六进制
十六进制是以 16 为基数的计数系统,每位取值是 0 和 F 之间的 16 个数值(依次为 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F),字母 A~F 表示最后的 6 个数字。
在十六进制中,逢十六进一,必须以 0X 或 0x 开头,十六进制主要用于二进制的简化表达方式。
十六进制应用场景
对有些编程任务而言,八进制和十六进制比十进制更适合。
我们经常使用十六进制表示颜色,如果您曾设置过网页的背景颜色,可能使用过表示绿色、蓝色和奶油硬糖色的十六进制数,它们分别是 0x001100、0x000011 和 0xFFCC99。
十六进制转换为十进制
0x58 和 0Xa21c 分别表示十进制数 88 和 41500,计算方式如下:
0x58 转换为十进制数:5 x 16
+ 8 x 16
= 88
0Xa21c 转换为十进制数:10 x 16
+ 2 x 16
+ 1 x 16
+ 12 x 16
= 41500
十六进制 a、c 分别转换为是十进制 10、12
示例代码如下:
// 十六进制开头为 0x 或 0X
int myInt1 = 0x58;
int myInt2 = 0Xa21c;
System.out.println(myInt1); // 输出:88
System.out.println(myInt2); // 输出:41500
浮点型字面量
浮点型字面量使用英文句点(.)表示小数点,以字母 F 或 f 结尾的字面量是 float 类型,以字母 D 或 d 结尾的字面量是 Double 类型。所有的浮点型字面量都被视为 double 类型,而不是 float 类型。要将浮点型字面量的类型定为 float,可加上字母 F(或 f)。
示例代码如下:
float myFloat = 3.1415926f;
浮点字面量可分三种表现形式:十进制数的 double 类型、十进制数的 float 类型、科学计数法形式。
十进制数形式展现 double 类型(默认类型,通常省略 D)
浮点类型的 double 字面量可分三种表现形式:5.12、512.0、.512。
示例代码如下:
double myDouble1 = 5.12;
double myDouble2 = 512.0;
double myDouble3 = .512;
System.out.println(myDouble1); // 输出:5.12
System.out.println(myDouble2); // 输出:512.0
System.out.println(myDouble3); // 输出:0.512
十进制数形式展现 float 类型
浮点类型的 float 字面量可分三种表现形式:5.12F、512.0F、.512F。
示例代码如下:
float myFloat1 = 5.12F;
float myFloat2 = 512.0F;
float myFloat3 = .512F;
System.out.println(myFloat1); // 输出:5.12
System.out.println(myFloat2); // 输出:512.0
System.out.println(myFloat3); // 输出:0.512
科学计数法形式(指数表示法)
科学计数法使用字母 e(或 E),而且指数可以是负数。
例如:5.12e2(即 5.12x102)、5.12E2(同样是 5.12x102)
示例代码如下:
double myDouble1 = 5.12e2;
double myDouble2 = 5.12E2;
double myDouble3 = 5.12e-2;
double myDouble4 = 5.12E-2;
System.out.println(myDouble1); // 输出:512.0
System.out.println(myDouble2); // 输出:512.0
System.out.println(myDouble3); // 输出:0.0512
System.out.println(myDouble4); // 输出:0.0512
负的数字字面量
负的数字字面量可在前面加上负号(-),例如,-100,-100L,-12.34,-12.13F。
以下划线分隔的字面量
对于很大的整型字面量,为提高代码的可读性,还可以在整型字面量中添加下划线 “ _ ”。
例如:1_000_000 或 0b1111_0100_0010_0100_0000 表示一百万、21_474_836_470L
示例代码如下:
int myInt1 = 1000000;
int myInt2 = 1_000_000;
int myInt3 = 0b1111_0100_0010_0100_0000;
System.out.println(myInt1); // 输出:1000000
System.out.println(myInt2); // 输出:1000000
System.out.println(myInt3); // 输出:1000000
其中 myInt3 以二进制显示阅读性最差, 其次就是 myInt1,myInt2 阅读性最好。这些下划线只是为了让人更易读。Java 编译器会忽略这些下划线。
在本章我们学习了:
- 使用二进制、八进制、十进制、十六进制来表示整型字面量
- 二进制转换十进制示例
- 八进制转换十进制示例
- 十六进制转换十进制示例
- 浮点型字面量就是带有小数点 “ . ” 的数值
- 浮点型三种表现形式:double、float、科学计数法
- 以下划线分隔的字面量,可提高可读性
接下来,我们开始学习 Java 的布尔/字符/字符串字面量:Java零基础22-Java 的布尔/字符/字符串字面量