《Java和Android开发学习指南(第2版)》—— 2.4 变量

简介: 一个字节占8个位,这表示要分配8个位来存储一个字节。最左边的位是一个符号位。0表示正值,1表示负值。0000 0000是0的字节表示,0000 0001表示1,0000 00010表示2,0000 0011表示3,并且0111 1111表示127,127是byte所能保存的最大的正值。

本节书摘来异步社区《Java和Android开发学习指南(第2版)》一书中的第2章,第2.4节,作者:【加】Budi Kurniawan,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.4 变量

变量是数据占位符。Java是一种强类型的语言,因此,每个变量必须有一个声明的类型。Java中有两种数据类型:

引用类型一个引用类型的变量,提供对一个对象的引用。
基本类型一个基本类型的变量,保存一个基本类型。
 Java如何存储整数值

你一定听说过计算机使用二进制数字,即只包含0和1的数字。本节对此提供了一个概要,当你学习操作符的时候可能用的上。

一个字节占8个位,这表示要分配8个位来存储一个字节。最左边的位是一个符号位。0表示正值,1表示负值。0000 0000是0的字节表示,0000 0001表示1,0000 00010表示2,0000 0011表示3,并且0111 1111表示127,127是byte所能保存的最大的正值。

那么,如何得到一个负数的二进制表示呢?很简单。先获取其对应的正数的二进制表示,然后将所有的位都取反,并且加上1。例如,要得到−3的二进制表示,首先从3开始,它是0000 0011。将所有的位都取反,得到

1111 1100

加1以后,得到

1111 1101

这就是−3的二进制表示。

对于int类型,规则是相同的。例如,最左边的是符号位。唯一的区别是,一个int类型占32位。要表示一个int类型中的−1的二进制形式,我们从1开始,它是

0000 0000 0000 0000 0000 0000 0000 0001

将所有的位都取反后,得到:

1111 1111 1111 1111 1111 1111 1111 1110

加1以后,得到了想要的数字(−1)。

1111 1111 1111 1111 1111 1111 1111 1111
除了数据类型,Java变量还有名称和标识符。在选择标识符的时候,有如下几条规则:

1.标识符是Java字母和数字的一个长度没有限制的序列。标识符必须以一个Java字母开头。

2.标识符必须不是Java关键字(表2.3中给出),不能是一个布尔字面值,也不能是空字面值。

3.标识符必须在其作用域内是唯一的。第4章将会介绍作用域。

e3ee0ff2475b046a5be421b1c3b0095b6c754030
Java字母和Java数字

Java字母包括大写的和小写的ASCII Latin字母A到Z(u0041-u005a,注意,u表示一个Unicode字符)和a到z(u0061-u007a),由于历史的原因,还包括ASCII下划线(_或u005f)和美元符号($或u0024)。$字符只能在机器生成的源代码中使用,极少数情况下,用来访问遗留系统中已经存在的名称。

Java数字包括ASCII数字0~9(u0030-u0039)。

以下是一些合法的标识符:

salary 
x2 
_x3 
row_count

以下是一些不合法的标识符:

2x 
java+variable

2x不合法,是因为它以数字开头;java+variable不合法,是因为它包含加号。

还要注意,标识符的名称是区分大小写的。x2和X2是两个不同的标识符。

你可以这样声明一个变量:先写类型,后面跟着名称加上一个分号。如下是变量声明的几个例子:

byte x; 
int rowCount; 
char c;

在上面的例子中,我们声明了3个变量:

  • byte类型的变量x。
  • int类型的变量rowCount。
  • char类型的变量c。
  • x、rowCount和c是变量名或标识符。

还可以在同一行声明具有相同类型的多个变量,两个变量之间用逗号隔开。例如:

int a, b;

这等同于:

int a; 
int b;

然而,在同一行声明多个变量的做法,我们不推荐,因为这降低了程序的可读性。

最后,可以在声明一个变量的同时给变量赋一个值:

byte x = 12; 
int rowCount = 1000; 
char c = 'x';

变量的命名惯例
变量名应该简短而有含义。它们应该是混合大小写的且以小写字母开头。后续的单词都以一个大写的字母开头。变量名不应该使用下划线_或美元符号$开头。例如,如下是与Sun的编码惯例一致的几个变量名的例子:userName、count和firstTimeLogin。

相关文章
|
4天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
24 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
17天前
|
Java
Java 变量命名规则
4月更文挑战第6天
|
21天前
|
监控 JavaScript 前端开发
《理解 WebSocket:Java Web 开发的实时通信技术》
【4月更文挑战第4天】WebSocket是Java Web实时通信的关键技术,提供双向持久连接,实现低延迟、高效率的实时交互。适用于聊天应用、在线游戏、数据监控和即时通知。开发涉及服务器端实现、客户端连接及数据协议定义,注意安全、错误处理、性能和兼容性。随着实时应用需求增加,WebSocket在Java Web开发中的地位将更加重要。
|
22天前
|
移动开发 Java Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【4月更文挑战第3天】在移动开发领域,性能优化一直是开发者关注的焦点。随着Kotlin的兴起,其在Android开发中的地位逐渐上升,但关于其与Java在性能方面的对比,尚无明确共识。本文通过深入分析并结合实际测试数据,探讨了Kotlin与Java在Android平台上的性能表现,揭示了在不同场景下两者的差异及其对应用性能的潜在影响,为开发者在选择编程语言时提供参考依据。
|
1天前
|
数据库 Android开发 开发者
安卓应用开发:构建高效用户界面的策略
【4月更文挑战第24天】 在竞争激烈的移动应用市场中,一个流畅且响应迅速的用户界面(UI)是吸引和保留用户的关键。针对安卓平台,开发者面临着多样化的设备和系统版本,这增加了构建高效UI的复杂性。本文将深入分析安卓平台上构建高效用户界面的最佳实践,包括布局优化、资源管理和绘制性能的考量,旨在为开发者提供实用的技术指南,帮助他们创建更流畅的用户体验。
|
1天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
1天前
|
存储 Java 测试技术
一文搞清楚Java中的方法、常量、变量、参数
在JVM的运转中,承载的是数据,而数据的一种变现形式就是“量”,量分为:**常量与变量**,我们在数学和物理学中已经接触过变量的概念了,在Java中的变量就是在程序运行过程中可以改变其值的量。
9 0
|
2天前
|
存储 Java
JAVA变量类型
JAVA变量类型
10 0
|
6天前
|
IDE Java 数据库连接
使用 Java 进行桌面应用开发
【4月更文挑战第19天】Java 是一款广泛应用于企业级、网络和桌面应用开发的编程语言。其跨平台特性使Java程序能在不同操作系统上运行,而JDK提供了开发所需工具和库。使用Swing等GUI库构建用户界面,结合JDBC进行数据库操作,Socket实现网络通信。虽然面临性能和用户体验的挑战,但通过优化和选用合适的IDE,Java仍能开发出高效稳定的桌面应用。
|
7天前
|
前端开发 Java Go
开发语言详解(python、java、Go(Golong)。。。。)
开发语言详解(python、java、Go(Golong)。。。。)