《Java和Android开发学习指南(第2版)》—— 2.6 字面值

简介: 很多时候,我们需要给程序中的变量赋值,例如,将数字2赋给一个int型变量,或者将字符“c”赋给一个char型变量。为此,需要按照Java编译器能够理解的格式来书写值的表示形式。表示一个值的源代码叫作字面值。

本节书摘来异步社区《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;`

2.6.2 浮点数字面值

像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 
8.f 
.5f 
0f 
3.14f 
9.0001e+12f```
如下是double字面值的示例:

2e1
8.
.5
0.0D
3.14
9e-9d
7e123D`

2.6.3 布尔字面值

布尔类型有两个值,字面值分别为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。你可以编写如下的字符字面值来表示字符:

'£'`
然而,如果你没有什么办法来使用键盘输入这个字符,可以使用将其转义的方式:

相关文章
|
15天前
|
人工智能 安全 IDE
一天成为Java开发高手:用飞算JavaAI实现十倍提效
“一天成为Java开发高手”曾被视为天方夜谭,但飞算JavaAI的出现改变了这一局面。这款AI开发助手通过智能引导、需求分析、自动化逻辑处理和完整代码工程生成,大幅简化了Java开发流程。它不仅帮助新手快速上手,还让资深开发者提高效率,减少调试时间。现在,参与“飞算JavaAI炫技赛”,展示你的开发实力,赢取丰厚奖品!
|
27天前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
65 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
1月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
179 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
1月前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
55 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
27天前
|
JavaScript 安全 Java
智慧产科一体化管理平台源码,基于Java,Vue,ElementUI技术开发,二开快捷
智慧产科一体化管理平台覆盖从备孕到产后42天的全流程管理,构建科室协同、医患沟通及智能设备互联平台。通过移动端扫码建卡、自助报道、智能采集数据等手段优化就诊流程,提升孕妇就诊体验,并实现高危孕产妇五色管理和孕妇学校三位一体化管理,全面提升妇幼健康宣教质量。
47 12
|
2月前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
111 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
23天前
|
安全 Android开发 iOS开发
escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
escrcpy 是一款基于 Scrcpy 的开源项目,使用 Electron 构建,提供图形化界面来显示和控制 Android 设备。它支持 USB 和 Wi-Fi 连接,帧率可达 30-120fps,延迟低至 35-70ms,启动迅速且画质清晰。escrcpy 拥有丰富的功能,包括自动化任务、多设备管理、反向网络共享、批量操作等,无需注册账号或广告干扰。适用于游戏直播、办公协作和教育演示等多种场景,是一款轻量级、高性能的 Android 控制工具。
|
6天前
|
搜索推荐 Java Android开发
课时146:使用JDT开发Java程序
在 Eclipse 之中提供有 JDT环境可以实现java 程序的开发,下面就通过一些功能进行演示。 项目开发流程
|
7天前
|
存储 监控 数据可视化
SaaS云计算技术的智慧工地源码,基于Java+Spring Cloud框架开发
智慧工地源码基于微服务+Java+Spring Cloud +UniApp +MySql架构,利用传感器、监控摄像头、AI、大数据等技术,实现施工现场的实时监测、数据分析与智能决策。平台涵盖人员、车辆、视频监控、施工质量、设备、环境和能耗管理七大维度,提供可视化管理、智能化报警、移动智能办公及分布计算存储等功能,全面提升工地的安全性、效率和质量。
|
15天前
|
人工智能 Java 数据处理
Java高级应用开发:基于AI的微服务架构优化与性能调优
在现代企业级应用开发中,微服务架构虽带来灵活性和可扩展性,但也增加了系统复杂性和性能瓶颈。本文探讨如何利用AI技术,特别是像DeepSeek这样的智能工具,优化Java微服务架构。AI通过智能分析系统运行数据,自动识别并解决性能瓶颈,优化服务拆分、通信方式及资源管理,实现高效性能调优,助力开发者设计更合理的微服务架构,迎接未来智能化开发的新时代。

热门文章

最新文章

  • 1
    Android历史版本与APK文件结构
  • 2
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 4
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 5
    【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
  • 6
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 7
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 8
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
  • 9
    Android实战经验之Kotlin中快速实现MVI架构
  • 10
    即时通讯安全篇(一):正确地理解和使用Android端加密算法