《Java和Android开发学习指南(第2版)》—— 2.6 字面值
本节书摘来异步社区《Java和Android开发学习指南(第2版)》一书中的第2章,第2.6节,作者:【加】Budi Kurniawan,更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.6 字面值很多时候,我们需要给程序中的变量赋值,例如,将数字2赋给一个int型变量,或者将字符“c”赋给一个char型变量。为此,需要按照Java编译器能够理解的格式来书写值的表示形式。表示一个值的源代码叫作字面值。有3种类型的字面值:基本类型的字面值、字符串字面值和空字面值。本章只介绍基本类型的字面值。第4章将介绍空字面值,第5章将介绍字符串字面值。
基本类型的字面值有4种子类型:整数字面值、浮点数字面值、字符字面值和布尔字面值。下面分别介绍这些子类型。
2.6.1 整数字面值整数字面值可以写为十进制(以10为基数,这是我们所习惯使用的)、十六进制(以16为基数)和八进制(以8为基数)。例如,100可以表示为100。如下的整数字面值都是十进制的:
2 123456
作为另一个示例,如下的代码将10赋值给int类型变量x。
int x = 10;
使用前缀0x或0X表示十六进制的整数。例如,十六进制的数字9E写作0X9E或0x9E。八进制的整数使用数字0作为前缀。例如,如下是八进制的数字567:
0567
整数字面值用于将值赋给byte、short、int和long类型的变量。请注意,我们所赋值的值不能超出了一个变量的存储范围。例如,一个byte的最大的值是127。因此,如下的代码将会产生一个编译错误,因为200对于byte类型来说太大了。
byte b = 200;``` 要将一个值赋给long类型,在数字的后面带上一个字母L或l作为后缀。L是首选,因为它很容易和数字1区分开来。一个long类型,可以包含的值在
-9223372036854775808L到9223372036854775807L (263)之间。
Java初学者常常会问,为什么需要使用后缀l或L,因为即便没有后缀,就像如下的代码一样,程序仍然能够编译。
long a = 123;
并不完全是这样的。没有后缀L或l的一个整数字面值,会被看作是int类型。因此,如下的代码将会产生一个编译错误,因为9876543210超出了一个int的存储能力:
long a = 9876543210;`
为了解决这个问题,需要在数字的末尾添加一个L或l,如下所示:
long a = 9876543210L;``` long、int、short和byte也可以表示为二进制形式,只要使用前缀字母0B或0b就可以了。例如:
byte twelve = 0B1100; // = 12`
如果一个整数字面值太长了,可读性会受到影响。为此,从Java 7开始,我们可以在整数字面值中使用下划线来将数字分隔开。例如,如下两条语句具有相同的含义,但是第2条显然更容易阅读。
int million = 1000000; int million = 1_000_000;``` 将下划线放在什么位置无关紧要。可以每3个数字使用一个下划线,就像上面的例子所示,或者任意多个数字使用一个。如下给出更多的例子:
short next = 12_345;
int twelve = 0B_1100;
long multiplier = 12_34_56_78_90_00L;`
像0.4、1.23、0.5e10这样的数字都是浮点数。浮点数有如下几个部分:
一个整数部分。 一个小数点。 一个小数部分。 一个可选的指数。以1.23为例。对于这个浮点数,整数部分是1,小数部分是23,没有可选的指数。在0.5e10中,0是整数部分,5是小数部分,10是指数。
在Java中,有两种类型的浮点数:
float。32位大小。最大的正的float是3.40282347e+38,最小的正的有限非零的float是1.40239846e-45。 double。64位大小。最大的正的double是1.79769313486231570e+308。最小的正的有限非零的double是4.94065645841246544e-324。 在float和double类型中,0的整数部分是可选的。换句话说,0.5可以写成.5。此外,指数部分可以表示为e或E。
要表示浮点数字面值,可以使用如下的格式之一:
Digits . [Digits] [ExponentPart] f_or_F . Digits [ExponentPart] f_or_F Digits ExponentPart f_or_F Digits [ExponentPart] f_or_F ``` 注意,方括号之间的部分是可选的。 f_和F_部分使得浮点数字面值是float类型。如果没有这一部分,该浮点数字面值将是double类型。要明确地表示一个double类型的字面值,可以加D或d后缀。要表示一个double类型字面值,使用如下的格式之一:
Digits . [Digits] [ExponentPart] [d_or_D]
. Digits [ExponentPart] [d_or_D]
Digits ExponentPart [d_or_D]
Digits [ExponentPart] [d_or_D] `
在float和double类型中,ExponentPart定义为如下的形式:
ExponentIndicator SignedInteger ``` 其中ExponentIndicator是e或者E,而SignedInteger是
Signopt Digits `
Sign是+或者-,加号是可选的。
float字面值的示例如下:
2e1f 3.14f 9.0001e+12f``` 如下是double字面值的示例:
2e1
8.
.5
0.0D
3.14
9e-9d
7e123D`
布尔类型有两个值,字面值分别为true和false。例如,如下的代码声明了一个布尔变量includeSign,并且为其分配了一个true值。
boolean includeSign = true;``` ####2.6.4 字符字面值 字符字面值是一个Unicode字符,或者是单引号括起来的一个转义序列。转义序列是无法使用键盘输入的Unicode字符或者在Java中具有特殊作用的Unicode字符的一种表示方法。例如,回车字符和换行字符用于终止一行,并且没有任何可视化的表示。要表示一个换行字符,需要对其转义,即写出其字符表示。此外,单引号字符需要转义,因为单引号用于将字符括起来。 如下是字符字面值的一些示例:
a
Z
0
ü`
如下是作为转义序列的字符字面值:
\b 回退字符 \t 制表字符 \\ 反斜杠 \ 单引号 \" 双引号 \n 换行 \r 回车``` 此外,Java允许我们对一个Unicode字符转义,以便能够使用ASCII字符的一个序列来表示一个Unicode字符。例如,字符£的Unicode代码是00A3。你可以编写如下的字符字面值来表示字符:
£`
然而,如果你没有什么办法来使用键盘输入这个字符,可以使用将其转义的方式:
Android开发:使用Java对手机截图图片进行任意区域的颜色对比度处理操作 开发项目过程中,对于手机屏幕截图,需要对获取到的截图的任意部分进行区域颜色对比度的识别操作,由此判定任意指定区域是否满足某对比度基本标准,但是该功能在网上任何地方都没有找到过Java方面的代码,于是根据RGB转换测试的原理:即获取每个像素点的RGB,通过RGB对比度定义公式进行像素点的集合换取。
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
相关文章
- java虚拟机学习-Java常量池理解与总结(13-2)
- 在java中使用JMH(Java Microbenchmark Harness)做性能测试
- java - 详解 Java 17 中新推出的密封类
- Java: mysql-connector-java
- Java并发JUC(java.util.concurrent)JMM内存模型
- 34 异常机制 异常体系结构 Java把异常当做对象来处理 并定义一个基类java.lang.Throwable作为所有异常的超类 Error Exception
- Android USB转串口开发(hoho.android.usbserial串口库)
- Java开发环境的搭建以及使用eclipse从头一步步创建java项目
- 【Java】java: 无法访问org.testng.annotations.Test
- 《Java和Android开发学习指南(第2版)》—— 1.2 第一个Java程序
- 《Java和Android开发学习指南(第2版)》—— 第2章 语言基础 2.1 ASCII和Unicode
- 《Java和Android开发学习指南(第2版)》—— 2.2 分隔符
- 《Java和Android开发学习指南(第2版)》—— 2.4 变量
- 《Java和Android开发学习指南(第2版)》——第1章,第1.1节下载和安装Java
- 《Java和Android开发学习指南(第2版)》——第2章,第2.5节常量
- 《Java和Android开发学习指南(第2版)》——第2章,第2.9节注释
- 《Android 源码设计模式解析与实战》——第1章,第1.7节总结
- 《Android游戏开发详解》一2.4 执行Java程序
- 《Java和Android开发实战详解》——2.1节如何构建应用程序
- 《Java和Android开发实战详解》——导读
- java(Android)跨Module调用对应类方法需求解决方案
- 基于 Android NDK 的学习之旅----- Java 方法映射到C中的签名
- Android开发之旅:android架构
- android开发 java与c# 兼容AES加密
- Android图形显示系统——上层显示1:界面绘制大纲---android的GUI系统
- ANDROID内存优化(大汇总——全)转载
- at android.widget.Toast$TN$1.handleMessage(java.lang.IllegalStateException)
- JAVA_Android APK反编译就这么简单 详解(附图)
- 【Android开发经验】怎样查看android-support-v4支持包中的源代码
- android反射组件 (一个)java 它们的定义annotation基础知识
- Android下载文件提示文件不存在。。。 java.io.FileNotFoundException
- Android开发基础(java)14