《Android游戏开发详解》一1.3 声明和初始化变量

简介: Android游戏开发详解 所有的基本数据类型(和字符串)都可以表示为变量。它们都是使用相同的基本语法来声明(创建)的。

本节书摘来异步社区《Android游戏开发详解》一书中的第1章,第1.3节,作者: 【美】Jonathan S. Harbour 译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.3 声明和初始化变量

Android游戏开发详解
所有的基本数据类型(和字符串)都可以表示为变量。它们都是使用相同的基本语法来声明(创建)的。

创建一个新的变量的时候,我们总是要声明两件事情:变量的数据类型(data type)和变量的名称(variable name)。在大多数情况下,我们还使用赋值运算符(assignment operator,即=)给变量指定一个初始值。有两种方法做到这点。第一种方法是指定一个字面值(literal value),例如,图1-1所示的'J'。第二种方法是,指定一个计算值的表达式(expression),例如,图1-1所示的35 + 52(这个表达式在赋值之前计算)。

w1

赋值运算符(=)不是在声明相等性。这一点很重要。正如其名称所示,我们使用赋值运算符把一个值(在等号的右边)赋给(assign)一个变量(在等号的左边)。例如,考虑如下两行代码。

int a = 5;
a = a + 10;

在这个例子中,我们不是要表示a和a + 10的对等关系。我们直接将a + 10的值赋值给一个已有的变量a。进行区分的一种较好的方法是,将等号读作“获得”。因此,图1-1应该读作,“int类型的num获得了表达式35 + 52的结果”。

作为一个练习,浏览一下程序清单1.3的6行代码中的每一行,并且尝试将其读出声,说出每行的含义。记住,要区分字面值(literal value)和表达式(expression)(如果忘记了,再回顾一下图1-1)。第1行应该读作“short类型的num获得了15”。记住,这意味着,“声明了一个类型为short、名为num的变量,并且将字面值15赋值给它”。

程序清单1.3 声明各种变量

1  short numberOfLives = 15;
2  long highScore = 21135315431 - 21542156; // uses an expression;
3  float pi = 3.14159f;
4  char letter = 'J';
5  String J = "James";
6  boolean characterIsAlive = true;

1.3.1 变量名和字面值

注意,当我们讨论字符和字符串的时候,使用了‘ ‘和“ ”将字面值和具有相同名称的变量(variable)区分开来。例如,在程序清单1.3中,变量名J引用“James”,而字面值‘J’指的是它自己。

1.3.2 初始化或不初始化
在以上的每个示例中,我们在声明过程中都使用了一个初始值来初始化(initialized)变量。然而,正如我在本节开始所介绍的,声明一个变量的时候初始化它(分配一个初始值),这本身并不是必须要做的。例如,我们可以这么做。

int a, b, c;
a = 5;
b = 6;
c = 7;

上面的第1行代码声明了3个整数类型,分别名为a、b和c。没有明确地赋给其初始值。接下来的代码行分别用值5、6和7初始化了这3个整数。

尽管这么做是允许的,我们通常也将声明变量并初始化它们,就像在前面程序清单1.3中所做的那样。

关键知识点

声明变量

当创建一个新的变量的时候,我们把一个值存储到计算机的内存中以便随后使用。我们可以使用该变量的名称来引用它。

打个比方,可以把变量看作一个盒子。当我们输入int a = 5的时候,是告诉Java虚拟机创建一个相应大小的盒子,并且把我们的值放进去。

Picture 93


w2

引用变量

一旦创建了变量,在引用它的时候,我们不应该声明其类型。提供变量的名称就足够了。

复制值

考虑如下所示的代码。

int x = 5; // declare a new integer called x
int z = x; // assign the value of x to a new integer z
z = z + 5; // increment z by 5
[End of Program]

你能告诉我,在程序结束的时候,x和z分别是什么值吗?如果你的回答是5和10,那么你答对了!

如果不是,也不必担心。很多初学者都不能正确地理解第2行代码。在第2行代码中,我们不是说int x和int z引用相同的盒子(变量)。相反,我们创建了一个名为int z的新盒子,并且将int x的内容复制后赋给它。

这对我们来说意味着什么呢?这意味着,当我们在第3行将z和5相加的时候,z变成了10,而x仍然是5。

相关文章
|
2月前
|
测试技术 Android开发
Android Poco初始化时,不大起眼但可能存在坑点的参数们
Android Poco初始化时,不大起眼但可能存在坑点的参数们
|
7月前
|
Shell Android开发
Android init language与init.rc初始化脚本
Android init language与init.rc初始化脚本
53 0
|
存储 Linux Android开发
|
编解码 监控 安全
【新功能】安卓手机设置“自动”初始化
【新功能】安卓手机设置“自动”初始化
1292 0
|
Java Android开发 图形学
Android修行手册之Kotlin-【变量和常量】、【基础类型】、【字符串】篇
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
186 0
|
安全 Java Android开发
【Android 逆向】Dalvik 函数抽取加壳 ( Dalvik 下的函数指令抽取与恢复 | dex 函数指令恢复时机点 | 类加载流程 : 加载、链接、初始化 )
【Android 逆向】Dalvik 函数抽取加壳 ( Dalvik 下的函数指令抽取与恢复 | dex 函数指令恢复时机点 | 类加载流程 : 加载、链接、初始化 )
235 0
【Android 逆向】Dalvik 函数抽取加壳 ( Dalvik 下的函数指令抽取与恢复 | dex 函数指令恢复时机点 | 类加载流程 : 加载、链接、初始化 )
|
Java Android开发
【Android 逆向】类加载器 ClassLoader ( 类加载时机 | 隐式加载 | 显示加载 | 类加载步骤 | 装载 | 链接 | 初始化 )
【Android 逆向】类加载器 ClassLoader ( 类加载时机 | 隐式加载 | 显示加载 | 类加载步骤 | 装载 | 链接 | 初始化 )
171 0
【Android 逆向】类加载器 ClassLoader ( 类加载时机 | 隐式加载 | 显示加载 | 类加载步骤 | 装载 | 链接 | 初始化 )
|
Android开发
【Android 逆向】Android 逆向通用工具开发 ( PC 端工程分析 | 网络初始化操作 | PC 端工程核心业务逻辑 )
【Android 逆向】Android 逆向通用工具开发 ( PC 端工程分析 | 网络初始化操作 | PC 端工程核心业务逻辑 )
123 0
|
JSON Android开发 数据格式
【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | SOCKET 网络套接字初始化 | 读取远程端 “Android 模拟器“ 信息 | 向远程端写出数据 )
【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | SOCKET 网络套接字初始化 | 读取远程端 “Android 模拟器“ 信息 | 向远程端写出数据 )
189 0