![Android 从入门到项目实践(超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/354/27563354/b_27563354.jpg)
第3章 Android开发基础知识
学习指引
由于Android是采用Java语言进行开发的,因此读者必须对Java语法有一定的了解。本章正是对后期Android开发进行了一个铺垫。
重点导读
·了解基本数据类型。
·掌握数值运算和类型转换。
·熟悉流程控制。
·掌握while循环、do while循环和for循环。
·熟悉数组的创建。
3.1 基本数据类型
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P52_549.jpg?sign=1739252834-yUyhnZdKisgS6kxBaQgliZfZIclAOArO-0-5327ca37f4cc087a224d7a5a944ba84f)
任何一门编程语言都有自己的基本数据类型,Java也不例外。本节将梳理Java中的基本数据类型。
3.1.1 字面值
在了解Java基本数据类型前,先了解几个计算机中的存储单位,如bit、Byte、KB、MB和GB等。
- bit:一个二进制位。
- Byte:8个二进制位为一个字节。
1KB=1024字节
1MB=1024KB
1GB=1024 MB
以上这些是计算机中的基本单位及换算关系,需要读者进行熟记。
Java中有以下8种基本数据类型。
① byte:字节型,Java中最小的数据类型,在内存中占8位(bit),即1字节,取值范围为-128~127(-27~27-1)之间,默认值为0。
② short:短整型,在内存中占16位,即两字节,取值范围为-32768~32767(-215~215-1)之间,默认值为0。
③ int:整型,用于存储整数,在内存中占32位,即4字节。取值范围为-2147483 648~2147483647 (-231~231-1)之间,默认值为0。
④ long:长整型,在内存中占64位,即8字节,取值范围-263~263-1之间,默认值为0。
⑤ float:浮点型,在内存中占32位,即4字节,用于存储带小数点的数字(与double的区别在于,float类型有效小数只有6~7位),默认值为0.0f。
⑥ double:双精度浮点型,在内存中占64位,即8字节,用于存储带小数点的数字,默认值为0.0d。
⑦ char:字符型,在内存中占16位,即两字节,用于存储单个字符,取值范围为0~65 535,默认值为空。
⑧ boolean:布尔类型,在内存中占1位,用于判断真或假。
3.1.2 取值范围查看
本小节通过一个小的实例,演示Java中几种整数类型的取值范围。新建工程,工程命名为app3后,具体操作步骤如下。
步骤1 打开新建工程,将左侧资源视图切换至res目录下的layout目录,如图3-1所示。
步骤2 双击activity_main.XML布局文件,将代码视图切换至设计视图。在设计视图中有两个界面,左侧为效果展示界面,右侧为界面布局,如图3-2所示。
步骤3 对界面进行简单布局,默认布局中会有一个文本框组件,拖动该文本框组件至合适的位置,再添加两个文本框控件,如图3-3所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P53_556.jpg?sign=1739252834-MiCTlD4FMcOTp6IwImFiiJHYL8IWkCPl-0-b4b299f6eb8b6126ad21d77c35a60eda)
图3-1 切换至布局文件
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P53_564.jpg?sign=1739252834-Fs8CDhs6OH0Z8XGbReB19iHtQQLHeexi-0-557301c1204efc1eb03a02e28c998e06)
图3-2 切换至设计视图
步骤4 可以发现新添加的控件与系统创建控件不同,系统创建控件四周有波浪线,这个是布局约束。选中其中一个控件,其四周会出现空心圆圈,用鼠标选中一个圆圈,拖动至父布局边缘便可以形成约束,如图3-4所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P54_576.jpg?sign=1739252834-xZ6r5jO4p36MObF4uTVOa7u2t9OxJEom-0-759c208b862fa4e9d06fa1cd8452de2f)
图3-3 3个文本视图控件
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P54_579.jpg?sign=1739252834-xr0ZypOoWXDVIsRJa4E7qfuV0y2SIuOd-0-c1673a5f837bc1fa87e9431c01e2dba1)
图3-4 添加约束
步骤5 选中某个控件后右侧会显示出该控件的属性,如图3-5所示。
步骤6 修改3个控件的约束,修改layout_width属性为match_const,如图3-6所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P54_583.jpg?sign=1739252834-L04z2cljvyOhES5HcLtSBf3aVD4hNYBY-0-7cbc5b63ad8d15f1c0417b82ea67ed82)
图3-5 控件属性
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P54_592.jpg?sign=1739252834-3nmuA3oEldc88FAMKZ7xXcKAjGZzxBai-0-55eae2878e146885113eccf44a8954d8)
图3-6 控件布局
步骤7 添加按钮控件,拖动至合适位置进行约束,如图3-7所示。
步骤8 修改按钮控件的onClick属性为doClick、修改text属性为“按钮”,如图3-8所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P54_601.jpg?sign=1739252834-6ND0DSNQ5GMsusxClhbXScHmyptIPUpy-0-495a742851c541e525f67b2009a0d6bd)
图3-7 添加按钮控件
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P54_604.jpg?sign=1739252834-fpUL0rBo2KIVJ5RY5UHjwGgwllBX3KWO-0-b80b0d96706336844cf03eb3a0bcf00c)
图3-8 修改按钮属性
步骤9 切换至MainActivity.java文件,修改其中的代码。具体代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P54_82900.jpg?sign=1739252834-rmVP4uDWRlPxMu244gA7mQ7kDv37Bb3A-0-8664ee04f9b6ae670db8ee9922c9dfa0)
步骤10 上述程序运行后单击按钮,查看运行结果如图3-9所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P55_787.jpg?sign=1739252834-HRAOzJXJuP8QqsJq3BRSffzRAAu29vxr-0-0ab94bbae47a7141bca044a037f86b45)
图3-9 运行结果
3.1.3 自由落体计算
本小节通过一个实例,演示浮点数在程序中的运算。要求创建一个模块,在界面中放置一个文本框控件用于显示结果,放置一个编辑框控件用于获取用户输入的数值,以及一个按钮控件用于执行运算,具体操作步骤如下。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P55_795.jpg?sign=1739252834-xquDxLoCuomJC8q0NMOdwnl3HyxlYg7d-0-92897f7088ef90d565d282d8a328edf5)
图3-10 创建模块
步骤1 新建一个模块,单击File→New→New Module可以创建一个新的模块,如图3-10所示。
步骤2 在打开的对话框中选择Phone & Tablet Module选项,如图3-11所示,选择完成后单击Next按钮。
步骤3 在打开的对话框中输入新模块的名称为free fall,选择开发SDK版本,如图3-12所示,设置完成后单击Next按钮。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P55_776.jpg?sign=1739252834-QaDulOgOOi8OYq0dkc3sYVqKBkPOC96r-0-0cb8920153b990e5a52ad54f88323bfb)
图3-11 新建模块
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P55_779.jpg?sign=1739252834-Y2ubJmfvALQPvlgKoj0usNYLM2S5Y3bn-0-3bccd14fb2b2ea5503e95c5e193801a1)
图3-12 模块名称
步骤4 在打开的对话框中选择Empty Activity,即一个空的活动模板,如图3-13所示,选择完成后单击Next按钮。
步骤5 在打开的对话框中设置活动名称及布局名称,保持默认值,单击Finish按钮,如图3-14所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P56_808.jpg?sign=1739252834-BZ80FWpRrzLQVtXZmy4mhBwnbQ8juSdb-0-c8a3f6c020f5e4c4fa0adaece91f5371)
图3-13 模板选择
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P56_811.jpg?sign=1739252834-Z0VubXvIFjXWViubBtvkyR6ZXZvHzaCU-0-dcc77e4712b64bdc7f62d4bbc2a26a82)
图3-14 创建活动名称及布局名称
步骤6 切换到新创建的模块中,设置布局,如图3-15所示。
步骤7 修改按钮的onClick属性及text属性,如图3-16所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P56_815.jpg?sign=1739252834-HnHvRUmI2WSAScjUAY2aw9cinmWUNqQv-0-13a454c4655cbcb32c4b5a69f6b18382)
图3-15 设计布局
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P56_818.jpg?sign=1739252834-80XOw3jNPXJihxRcTMLzWaV9EcwoB5Mj-0-2aff6e57bb7745c71065f675151dcf4a)
图3-16 修改按钮属性
步骤8 切换到MainActivity.java文件中,修改主活动中的代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P56_82906.jpg?sign=1739252834-q7bQjlNbuexiDOimyxYmzAIAaIyLBKm1-0-c4904e6d1e46a2f097a836eef80bcf57)
提示:自由落体公式为h=gt2/2,其中h为物体下落距离;g为重力加速度;t为时间。
步骤9 在编辑框中输入时间,如“20”,单击“计算结果”按钮,查看运行结果,如图3-17所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P57_3885.jpg?sign=1739252834-AK6YWxlY6uJn2GuSJ53tpSQJgm0WSm0Q-0-9b2481345f0a3fd0434f2762ebd6cb39)
图3-17 运行结果
3.1.4 字面值与前后缀
1. 字面值
在Java源代码中,字面值用于表示固定的值。数值型的字面值是最常见的,字符串字面值也可以算是一种,当然还可以把特殊的null当做字面值。字面值大体上可以分为整型字面值、浮点字面值、字符和字符串字面值及特殊字面值。这里重点介绍整形字面值和浮点字面值。
1)整型字面值
从形式上看,整数的字面值可归类为整型字面值。一般情况下,字面值为int类型,但是int字面值可以赋值给byte、short、char、long、int,只要字面值在目标范围以内,Java会自动完成转换;如果试图将超出范围的字面值赋给某一类型(比如把128赋给byte类型),编译时会通不过。下面给出一些实例。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P57_82908.jpg?sign=1739252834-81plNDpkjtsq6S8h2IcJffHDcPaCNBbN-0-5c85206205aa76c1020bd3c1d9fe9c4d)
2)浮点字面值
浮点字面值可以理解为小数,默认情况下浮点数采用double类型字面值;另外,浮点字面值支持科学记数法表示。下面给出一些实例。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P57_82909.jpg?sign=1739252834-wM4bzOZNTCJ80F1NjMkHmW8roTjcqymd-0-2be4468af69325f0e4f3685e6b469460)
2. 前后缀
1)前缀
Java中为了区分不同进制数,预留了前缀。通过前缀可以告知编译器数据是什么进制及类型。
常用前缀举例如下。
(1)0x:十六进制表示法。
0x123456789abcdef:十六进制数。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P57_82910.jpg?sign=1739252834-rTOcVixdEkUlmi54e96S1X8cjV4lFtwt-0-48e668285ddb523b74d812c880f93328)
(2)0:八进制表示法。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P58_82911.jpg?sign=1739252834-4UTd9pnJFyetyiPnOidcbAgsEQnfDfxi-0-f0fc953950e51113e1269c815d6393ed)
(3)\u:char类型十六进制表示法。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P58_82912.jpg?sign=1739252834-RbRFf6WtyVntZu4xuCflEhdHPMeLdJmC-0-460f595e2b6e7eafbc4060456acc952a)
2)后缀
为了强调数据类型,Java中还提供了后缀。使用后缀可以告知编译器数据的类型。
常用的几种后缀如下。
- L:代表long数据类型。
- F:代表float数据类型。
- D:代表double数据类型。
例如:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P58_82962.jpg?sign=1739252834-vqtuE4HG4cG0RSpGn5jv4WaZtRMrYPfc-0-dac2a07a2f9e86a33cbf295df6940d36)
3.2 数据运算
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P58_4060.jpg?sign=1739252834-Y5tn9oiRKV6vheUsWX3XffVeC12AzpB3-0-436bc184daddcf62dd54cb47cd94a374)
数据运算是对数据进行处理的基础,需要遵循某种运算规则,其包括算数运算、逻辑运算及关系运算规则。
3.2.1 数据运算规则
1. 常用运算举例
Java基本数据类型的数据运算中,运算结果与参与运算的数据类型中精度最高的保持一致。例如:
- 3/2,整数3除以整数2的运算结果1还是整数类型。
- 3D/2,运算结果是double 1.5。
- 1/2/4D,运算结果是double 0。运算时从左向右,其运算结果是0,因为1/2的结果是整数0,如果想要得到正确结果,需要将首次运算1/2的其中一项转换成浮点型。
Byte、short、char 3种整数类型运算时,会先自动转换为int类型。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P58_82967.jpg?sign=1739252834-A2rNalOfnNZrKh5XGMaKbxlsVfdx60UM-0-c69a60c9106f409c263642f1aa5bfc0f)
2. 整数运算中的溢出
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P58_82968.jpg?sign=1739252834-6mYk8aoY0swhDee50UIkU0H7yV9FsVJg-0-9d27a78b256cb06ae0599e11c3edff62)
int、long有溢出,而byte、short没有,因为byte、short类型数据在运算时要先转换成int类型。
3. 浮点数运算不精确
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P58_82969.jpg?sign=1739252834-fkqps66OryVZX7Sh1Qapxc0oqB2ulzcd-0-691e4e252c39f44d762eb71e37204b75)
以上这点需要了解,遇到需要精度较高的情况时要避免运算不精确。
4. 浮点数的特殊值
- Infinity:无穷大。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P59_82973.jpg?sign=1739252834-JZhC8yBfAV8TRVisL88oCOko82KUpfZI-0-8fb7f347a0e1932e6825dedefe11117c)
- NaN:Not a Number,不是一个数字。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P59_82974.jpg?sign=1739252834-qq2fqfjDrZGX2DvPVcnu75Weajp3T1mH-0-d14e9318007392556b388d0619be773c)
3.2.2 鹊桥会
本小节通过“鹊桥会”一个经典实例,演示基本数据类型在实际中的应用。
已知牛郎星距离织女星约16.4光年,光速为299 792 458m/s,一只喜鹊身长0.46m,要求计算牛郎与织女相会需要多少只喜鹊。
创建新的模块,在模块中设置一个文本框控件和一个按钮控件,通过计算输出结果,具体操作步骤如下。
步骤1 新建模块并设置模块名称为bridge,界面布局如图3-18所示。
步骤2 修改主活动中的代码。具体代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P59_82976.jpg?sign=1739252834-n9S47CZZUmvyvZXLdHRtVS8J0uv5ZJYF-0-2abdb3570e497b4145251093d4acf937)
步骤3 上述程序运行后单击“计算”按钮,查看运行结果,如图3-19所示。这里运算出来的喜鹊数量是浮点数,但每只喜鹊是一个独立整体,因此喜鹊数量不可能存在浮点数,这个留在下一节讲解。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P59_4178.jpg?sign=1739252834-4dHKedxy1C3JrJgPRnwdDZkH4NrrYZNm-0-7fc9f911c2620fa9623ee53b5d8dda19)
图3-18 界面布局
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P59_4181.jpg?sign=1739252834-TCpZrPFYCbIycMiHfCShOiFjwXaHCCnn-0-65099aa7b23edec1b27762501b66a7d6)
图3-19 运行结果
3.2.3 类型转换与运算符
在数据运算中,两个类型不匹配的数据运算过程中会涉及类型转换(其又分为自动类型转换与强制类型转换两种),而在运算过程中自然还需要各种运算符。下面对类型转换和运算符分别进行讲解。
1. 类型转换
1)自动转换
从低精度转换为高精度或数据类型从小转换到大都可以自动转换。例如,byte→short→int→long→float→double这些类型都可以自动转换。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P60_82979.jpg?sign=1739252834-xjxyRhZqVJGVcSloO1h7jI0EbpixGdap-0-762e8e85d5c08a7bef67cd4d7cf0261f)
2)强制转换
高精度转换为低精度可以强制转换。例如:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P60_82980.jpg?sign=1739252834-ZLdzBPCdUUgiOlhbZ7EnUCMP72PzyoTi-0-19a5f241a8fe7abc0a87c071862b4da4)
浮点数转换为整数,舍弃小数。例如,上一节中的喜鹊数量要得到一个整数便需要强制转换(喜鹊数量强制转换为long类型可避免数据不准确),修改代码为long n=long(d/0.46+0.9);。注意后面的运算要括起来,否则可能导致只对前面的数据进行强制转换。
2. 运算符
Java中的常用运算符见表3-1。
表3-1 常用运算符
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-T60_82981.jpg?sign=1739252834-Q9dWzbHxhYzIu5b7ztWJeuVfxpNA59rH-0-f543276fa9de899b22fec2af900c059b)
赋值运算符“=”可以与其他运算符结合使用。例如:
- +=(加等于),表示将结果计算完成后再赋值。
- *=(乘等于),表示先进行相乘运算,再进行赋值。
3.2.4 是否为闰年
经典案例“闰年判断”会涉及大量的运算,本小节通过该案例熟悉运算符的操作。闰年的判断条件是能被4整除但不能被100整除,或者是能被400整除。
创建一个新模块,在模块中放置一个编辑框控件用于获取用户输入信息,再放置一个按钮控件,以实现输入年份后单击该按钮便提示该年份是否为闰年,具体操作步骤如下。
步骤1 新建模块并命名为leap year,界面布局如图3-20所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P61_4389.jpg?sign=1739252834-SRqBCZGbIj1M8FMF30pMlngxY9KhblbF-0-9574c5891423569c004ee0107d229581)
图3-20 界面布局
步骤2 修改编辑框控件的hint属性,给出用户提示信息,如“请输入年份”,如图3-21所示。
步骤3 修改按钮的onClick属性和text属性,如图3-22所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P61_4393.jpg?sign=1739252834-ZrBMmznAt1bFiJuDJExV3c3Pe6A24rk4-0-fb174d16f4aba3ee1d0e40ffdaa20384)
图3-21 编辑框属性
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P61_4402.jpg?sign=1739252834-a9lzKwd4gnvbqRb4ZLM4nviGZdWaXZA1-0-bfecc648e7449a62964e9270fd0e3612)
图3-22 按钮属性
步骤4 修改主活动中的代码。具体代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P61_82985.jpg?sign=1739252834-42L7w2LubB05vqKHpd6bLYbI8f16z251-0-2b62b64ce050add1253db027c92bf357)
步骤5 运行上述程序后输入相应的年份进行测试,查看运行结果,如图3-23所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P62_4541.jpg?sign=1739252834-eQJofJxZ7Xf4btdtNXpMEZH4f6tuDri6-0-d434f4f0d23dcce8cf0f51768cb0f891)
图3-23 运行结果
提示:修改上述步骤4闰年判断中的条件语句,使用一条语句完成判断。具体代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P62_82987.jpg?sign=1739252834-l60kQyvX9Qrm1C1rZvVt0TLxI4lCmIeI-0-99b8f5399bd8581b3d5a67a14d14435b)
3.2.5 位运算
Java中的位运算是将需要运算的数据类型先转换成二进制,再进行相应的位运算,本质是二进制运算。位运算符包括按位与、按位或、按位异或、取反、左移及右移。
- &:按位与运算符,两位同时为1则结果为1。
- |:按位或运算符,两位同时为0则结果为0。
- ^:按位异或运算符,两位相同为0,不同为1,对同一个数字异或两次得到同值。
- ~:取反运算符,1与0互换。
- >>:有符号算数右移运算符,要用原来的符号位填充操作数右移的空位。
- >>>:无符号算数右移运算符,高位全部补0。
- <<:左移运算符,左移后全部补0(左移不涉及符号位,因此全部补0),不区分逻辑与算数运算。
注意:右移位相当于除以2,左移位相当于乘以2。
本小节通过一个案例熟悉位运算,拆分整数成4个byte类型数据。新建一个模块并依次创建一个编辑框用于用户输入整数数据、一个文本框控件用于显示运算结果及一个按钮控件用于提交运算,具体操作步骤如下。
步骤1 新建模块并命名为split,界面布局如图3-24所示。
步骤2 修改按钮的onClick属性和text属性,如图3-25所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P62_4559.jpg?sign=1739252834-zcxM3nOh3r4FtqtCPORdI3syuZuSfRy5-0-a8d74f46422c68dbd218ddea628136f6)
图3-24 界面布局
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P62_4562.jpg?sign=1739252834-wIN7YnDXdw3LQV8q4EOVFkBQofCZDNs1-0-04a7186a1b0a081e0287bad02dada346)
图3-25 按钮属性
步骤3 修改主活动中的代码。具体代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P62_83000.jpg?sign=1739252834-pJU3bsR9srLV5TB9RKMIHa231II9Ffz8-0-c889b88078caa8491f5e87dc0c822f4a)
步骤4 运行上述程序,查看运行结果,如图3-26所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P63_4704.jpg?sign=1739252834-SJhhSzifQM19Cd5FotqNOwfq9uZ0Gzo9-0-33419927e0d26e529276cd21fe75e595)
图3-26 运行结果
3.3 流程控制
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P63_4736.jpg?sign=1739252834-SnoVZDH6ViBNPKOPeHdJCHQtRawlOqAJ-0-f1b189295ea8024a98ae306245cfd08c)
程序的执行顺序是依次往下的,但是通过流程控制可以改变程序的运行顺序。由于有了流程控制,程序运行才变得多变,进而解决更加复杂的问题。
3.3.1 简单流程控制
简单判断语句分为if、if…else、if…else if…else及它们之间的嵌套。
(1)生活中经常需要先做判断,然后才决定是否要做某件事情。例如,如果下雨,则在家打游戏。对于这种需要先判断条件,条件满足后才执行的情况,就可以使用if条件判断语句实现。
语法格式:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P63_83003.jpg?sign=1739252834-PtV0lSmGC2cAotkH4SyEzK5H24gOsjkM-0-573cb74170b71faf506710142d79d508)
其执行流程示意图,如图3-27所示。
(2)if…else语句的操作比if语句多了一步,当条件成立时,则执行if部分的代码块;如果条件不成立,则执行else部分的代码块。例如,如果下雨,则在家打游戏;否则,出去逛街。
语法格式:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P64_83004.jpg?sign=1739252834-BDIYqE1snu1vkcBrKYgqsnMX1ktT9F2B-0-2a1155e48764c3d3f09dcd85a5626358)
其执行流程示意图,如图3-28所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P64_4771.jpg?sign=1739252834-6yLcpFTKnux7mPRBop7EAlFl6yja2fbe-0-3247836a5a1f1579d635fb2b8919fb9c)
图3-27 if执行流程
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P64_83005.jpg?sign=1739252834-gkSEnrKTu5yTICMBTUVA6vfLLB6khjv9-0-715322aa72c84fb7011e2aac5dfb3f22)
图3-28 if else执行流程
(3)多重if语句——if…else if…else语句在条件1不满足的情况下,会进行条件2的判断;当前面的条件均不成立时,才会执行else内的代码块。例如,如果阴天,则写作业;如果下雨,则在家打游戏;否则,去逛街。
语法格式:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P64_83007.jpg?sign=1739252834-LjrlKQJQuay7JiGEpc5aQRf44FOAtKFe-0-f991c67be9e77789996d899a43dc218a)
其执行流程示意图,如图3-29所示。
(4)嵌套if语句只有当外层if的条件成立时,才会判断内层if的条件。例如,某活动计划的安排:如果今天是工作日,则去上班;如果今天是周末,且天气晴朗就进行户外活动,否则在室内活动。
语法格式:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P64_83008.jpg?sign=1739252834-sdf50uuSybaccZ5wCVKh16SMVddRdyMw-0-8d79a3ff4127f8b0ce0c32701adebf89)
其执行流程示意图,如图3-30所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P65_4895.jpg?sign=1739252834-AaIJXqX68oewuyKDOFG9xtm2Nuj0bVg2-0-b132a46150f5816a9d92cc8fcf1c979f)
图3-29 多重if执行流程
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P65_4906.jpg?sign=1739252834-wnKr7ZXuLXBwDXmhLvsAHbReD84OZoH6-0-a22975d479a9a540ae4adfbc8fc15a12)
图3-30 if嵌套执行流程
3.3.2 个人所得税
通过用户输入工资,判断个人应交税费,这个项目可以很好地利用简单流程控制来实现。个人所得税参考表3-2,其仅用于学术研究,内容不作为实际参考。
表3-2 个人所得税参考表
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-T65_83010.jpg?sign=1739252834-xd5fEyZVgVdcNSY7gTMl2w1sQCi899wO-0-18e3d9e9a60502db0d971f3dd7f0c9bd)
新建一个模块,在模块中放置一个编辑框控件、一个文本框控件和一个按钮控件,具体操作步骤如下:
步骤1 新建模块命名为revenue,布局控件如图3-31所示,并修改按钮属性。
步骤2 定义两个变量,r为税率,k为速算扣除数。具体代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P65_5042.jpg?sign=1739252834-KPmLazqlLScJqDn43EOncQUFnsFP3CkG-0-235157a6cb6fb6742f735635194596cf)
图3-31 界面布局
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P65_83011.jpg?sign=1739252834-WUihVRx4S1dggyfJGRHwQn22tabrJZXY-0-d39c66b47b032358dfbbe0ee2d24890a)
步骤3 工资低于3500元,返回0,因为没有达到扣税标准。具体代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P65_83013.jpg?sign=1739252834-9hwMAdQjnFiAVuDUUIh9uYi3THpEaUEL-0-8cd2dcde68fc0b8cf60c0e0e94d36f0e)
步骤4 工资高于3500元,扣除不纳税部分3500元后,计算税率(计算公式为应纳税部分×税率-速算扣除数)。具体代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P66_83014.jpg?sign=1739252834-NkQCR94DSmNgWDIgJTc8MQzRZnOkjRFz-0-d62b4a8afcec75edf612c3326adad1c4)
步骤5 修改主活动中的代码。具体代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P66_83015.jpg?sign=1739252834-CbaZa48z2DX9U7Cp95cugOmRPTxxP0DS-0-7f20f102a848302aed106b38fccc6745)
步骤6 运行上述程序后,输入工资,查看运行结果,如图3-32所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P66_5326.jpg?sign=1739252834-9NC7WwzxswEiH10qsdQaYIWeZulA0yvk-0-a9312b9dc00a17cbaeb9ed1797a47245)
图3-32 运行结果
3.3.3 switch case
switch case语句是多路选择语句,它可以与if…else if相互转换,但是如果判断条件比较多时,switch case语句效率要高一些。
语法格式:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P67_83018.jpg?sign=1739252834-DoIxGHRTIs7jUI1XjldiAZRbPNX9r0Db-0-3ec3bd099d159a4e6d47bc756b6effea)
switch语句由一个控制表达式和多个case条件组成,switch控制表达式支持的类型有byte、short、char、int、enum(Java 5)和string(Java 7)。switch语句中有一个default关键字,在当前switch找不到匹配的case条件时执行其语句,default并不是必需的。
一旦case条件匹配,就会顺序执行后面的程序代码,而不管后面的case条件是否匹配,直到遇到break。break在switch语句中用于结束当前流程,以下程序中存在一个忘记编写break的“陷阱”。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P67_83019.jpg?sign=1739252834-GL6uK0tvJwSFMoefHBjtLqldQZpWwUBr-0-a8553690074e99f86e849ac4e46186f4)
上述程序运行结束后,结果为a=3。虽然i=1进入了第一个case,但是由于没有break,因此一直顺序执行到case 3将a重新赋值为3。可见,在使用switch语句时一定不能忘记添加break。
3.3.4 最大天数
本小节通过“最大天数”项目熟悉switch case语句的使用,该项目实现由用户输入一个某年某月,得出该月的天数。
创建新的模块,设置两个编辑框控件、一个文本框控件和一个按钮控件,具体操作步骤如下。
步骤1 新建模块并命名为MAXday,界面布局如图3-33所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P67_5456.jpg?sign=1739252834-5de9YdivDFRmFZvOr7vRmXrDRa21ACgC-0-52f1452c6cd6e23274fd4a9f32006f0c)
图3-33 界面布局
步骤2 创建函数runNian()用于判断是否为闰年,该函数返回值为布尔类型。
步骤3 修改主活动中的代码。具体代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P68_83021.jpg?sign=1739252834-fHUP0vdTip3yal3BWYSYP5uFqHmKWaLT-0-60035553b0d0567e5db731695b796f51)
步骤4 运行上述程序,输入年份与月份,查看运行结果,如图3-34所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P69_5803.jpg?sign=1739252834-LlLwYemXsa6aMKsIQg0IEvxbdzGYxepc-0-24f3bb61a20e502140138fc6617c7ef0)
图3-34 运行结果
3.4 循环
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P69_5880.jpg?sign=1739252834-dVB2K3l75o28JLhExiuJMTlPlSydHawu-0-8a780f14be55eaea4da99d0b76930fe1)
在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称为循环体。能否继续重复,由循环的终止条件决定。
3.4.1 while循环
While循环是Java中的一种基本循环模式。当满足条件时,开始进入while循环;进入循环后,当条件不满足时,跳出循环。
语法格式:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P69_83022.jpg?sign=1739252834-HLFVnlNHhjPJ36HRzAeQdYSOsaezViB9-0-f61bbc555d8619bb10f0c2aa155d1fad)
下面通过一个实例——求n的阶乘,演示如何使用while循环。创建新模块并设置一个编辑框用于输入n的值、一个文本框用于显示计算结果和一个按钮用于提交信息,具体操作步骤如下。
步骤1 新建模块并命名为factorial,界面布局如图3-35所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P69_5839.jpg?sign=1739252834-QLqIwAxEmt8NYz4uSRKU8x9VyIiHBMSi-0-c1dd672d07f1625c28c5ca2200c2ad6c)
图3-35 布局界面
步骤2 修改主活动中的代码。具体代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P69_83023.jpg?sign=1739252834-L8Ca8mnseBip0NOlKmDHqKhx3HdiTHK3-0-4f499fdfa248022b29a8e1cb8a076e3c)
步骤3 运行上述程序,输入相应数据并单击“提交”按钮,运行结果如图3-36所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P70_5992.jpg?sign=1739252834-uGVnmkFJN9XfM0hfPXrtL9ECqXfqqVrQ-0-fd9ac14e4e41b50f77f6517812091a85)
图3-36 运行结果
3.4.2 do while循环
do while循环与while循环类似,唯一的不同在于:do while循环至少需要执行一次,而while循环则不一定。
语法格式:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P70_83025.jpg?sign=1739252834-S32LgMFp1ILoe4snJb4MPFOxlVW7H5Un-0-fc52204a1a2a9d202f47e6d092260834)
下面通过一个实例——计算π的值,演示如何使用do while循环。计算π的公式如下:
π/4=1/1-1/3+1/5-1/7+1/9…
创建一个模块并命名为pai,设置一个编辑框控件用于输入结束数据,再设置一个文本框控件和一个按钮控件,以实现单击按钮便将计算结果显示在文本框控件内。主活动代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P70_83027.jpg?sign=1739252834-XiJ49aXAqgn206SOjvfLAhyINQlgNnvP-0-1d3040497c536f4e47e7c389083ca9a2)
运行上述程序,输入一个数值,其范围越大则π值越精确,查看运行结果,如图3-37所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P71_6192.jpg?sign=1739252834-UPkjbWBnV5jqaDw5DChKGKVbRHXAqLBd-0-016ffeb3334193cf00a2fe138ddb59b1)
图3-37 运行结果
3.4.3 for循环
for循环是一种更加接近人类语言的循环模式,它用了3个表达式,而且每个表达式都可以省略。
语法格式:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P71_83029.jpg?sign=1739252834-9tyfxutNGlFOxZbwIbzKDf1bhVTy5FOO-0-836ae236d9bf90235831dd56bb83803a)
下面通过一个实例——判断一个数是不是水仙花数,演示如何使用for循环。水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,其是指一个3位数每位数字的3次幂之和等于它本身(例如:13+53+33=153)。
创建一个模块并命名为narcissistic,设置一个编辑框控件用于接收用户输入的数值、一个文本框控件用于输出结果和一个按钮控件用于开始程序运算。拆出一个整数(如736)的个位、十位、百位等的具体方法如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P71_83030.jpg?sign=1739252834-G9P6nPTCrXAt9Ny97EUGXYGS0GbsUBYk-0-6c26863092a6eaf08bf5606e6355a26f)
主活动中的具体的实现代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P72_83031.jpg?sign=1739252834-RYSWFDfEZGkwKH15dZZEflzvcCjVZOQI-0-e20309a5dc06b988007515d3dec942c3)
运行上述程序,输入999,计算该3位数范围内的所有水仙花数,运行结果如图3-38所示。本实例使用了Math.pow()方法,该方法是Java类库自带方法,读者只要会用即可。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P72_6501.jpg?sign=1739252834-p8mnmLUsnsJhCjaxxtFwlwQhXiMo00gt-0-e1df6ad060610cb862724db79dc68711)
图3-38 运行结果
3.4.4 循环嵌套
循环嵌套是程序中常用的一种方法。在一个循环体内部还包含另一个或多个循环语句,这样的循环被称为循环嵌套。下面通过一个实例,演示循环嵌套。“百钱买百鸡”实例——小鸡1元/只,母鸡3元/只,公鸡5元/只,要求用100元购买100只鸡有多少种组合方式。
新建一个模块并命名为chicken,在界面中设置一个文本框控件用于显示结果、一个按钮控件用于开始计算。核心代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P73_83032.jpg?sign=1739252834-XkSre1bJyy0dyujYBHWUjY1jTHbWU9Al-0-fe1a498b29bec70143c1ab28c8aa1bc6)
完整代码可参考第3章的chicken模块,运行结果如图3-39所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P73_6614.jpg?sign=1739252834-2oVXWA87APfHWmTr6LDwBGxAdeki8LNA-0-a270a45e8e06ab274cd8e6fd97d5c5a5)
图3-39 运行结果
3.5 数组
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P73_6628.jpg?sign=1739252834-a9NgPdpmWuWodglMRdlT1p9ZTIOIge0s-0-f931596170463f3d2394981f32aa5219)
数组用于存储具有统一类型的一组数据,一旦数组的长度确定,将不能改变。数组是一个复合型数据类型,其在实际编程中会被大量使用。
3.5.1 数组的创建
数组的创建可以分为3种情况:第一种是使用new关键字创建;第二种是直接给定一个数组;第三种是通过new关键字创建一个给定元素的数组。
第一种:int[]a=new int[5];,新建一个int类型的数组,数组长度为6,数组创建出来后使用0填充其各元素。
第二种:int[]a={24,12,58,77,2,18};,创建一个int类型的数组,其包括{}中的6个元素,数组的长度为6。
第三种:int[]a=new int[]{12,35,55};,创建一个int类型的数组,其包括3个元素,数组的长度为3。
数组的内部可以存储基本数据类型的数据。例如:
- 0,12,3——整数数据类型。
- 3.14,0.123——浮点数数据类型。
- false,true3——布尔数据类型。
- 数组在创建后,不同数据类型会有不同的初始值。具体如下:
- int类型定义的数组,其初始化默认值为0。
- String类型定义的数组,其默认值为null。
- char类型定义的数组,其默认值为0对应的字符。
- double类型定义的数组,其默认值为0.0。
- float类型定义的数组,其默认值为0.0。
- boolen类型定义的数组,其默认为false。
3.5.2 数组的使用
创建完数组便可以使用数组了。数组的存取都是通过数组下标来实现的,需要注意的是,Java中的数组下标是从0开始的。
给数组中某个位置的元素赋值,例如:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P74_83045.jpg?sign=1739252834-0dT3FO6ssiXMaFbovP7FBifEcmUm5M31-0-3bd841d617bc007cb5135d08a46c9ed4)
将数组中某个位置的元素赋值给一个变量,例如:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P74_83046.jpg?sign=1739252834-NjmHlA0UQnFxwFVygWyCAe8K4HXeLkSV-0-ed4073aa533b60f24444fec8d2c17428)
使用数组需要注意的是,数组越界的问题,数组越界会导致程序出错。数组有一个长度属性length,在数组存取时可以先通过length属性获取数组长度,再对数组进行操作。例如,遍历数组中的所有元素,具体代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P74_83047.jpg?sign=1739252834-wzZWUUV2CZViFX1OcT7OWshKhSIZmhjv-0-793b09f8fae8365d552e6ebf9c6f216a)
3.5.3 双色球
本小节通过“双色球”实例熟悉数组的存取。新建一个模块并命名为Double Ball,该项目中需要创建5个数组:创建一个数组用于存放红色球编号,同时创建一个等长的boolean型数组用于判断红色球的选取状态,再创建一个数组用于存放蓝色球编号,同时创建一个等长的boolean型数组用于判断蓝色球的选取状态,最后创建一个数组用于存放取出的球。这里选用的是“33+1”双色球。
完整代码可参阅第3章的Double Ball模块,其中核心代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P74_83048.jpg?sign=1739252834-5t8pK7pefSjpa8uooV4FlTTeGeVykcya-0-c2dcc5c61d0c66db4939227574e3b48b)
运行上述程序,单击“机选(6+1)”按钮,查看运行结果,如图3-40所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P75_6904.jpg?sign=1739252834-XmEvbAdQ4vfAjKnZmQWcbU47GlgQdKbl-0-51e3c4de59a837905f6cf48974125528)
图3-40 运行结果
3.5.4 排序
在实际开发中排序算法的使用非常频繁,了解排序算法对于编程思想的构建是非常有帮助的。本小节将介绍两种基本排序算法——插入排序算法和冒泡排序算法,通过这两种排序算法,读者能够更加深入理解数组的存储及使用。
新建一个模块并命名为sort,设置两个文本框控件,第一个文本框控件用于显示随机生成的数组元素,第二个文本框控件用于显示排序后的数组元素,再设置两个按钮控件,分别进行插入排序和冒泡排序操作。具体代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P76_83050.jpg?sign=1739252834-uV2u1ibG6h6iFfD1J99ZsodU9Ow0sEew-0-b9b4d75956fcf11e12cff8ea93c8b101)
运行上述程序,单击相应的排序按钮,查看运行结果,如图3-41所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P77_7417.jpg?sign=1739252834-rifJkmKY0O9buB5cLqGppdlBP5WKhyvx-0-4c6e033067c24d715b8bbac7c3616dae)
图3-41 运行结果
3.5.5 二分查找
通过学习前面的排序算法,相信读者对数组和排序都有了一定的了解。有了排序的基础,读者才能更好地进行本小节的二分查找学习。二分查找也是编程进化中的一种思想。
新建一个模块并命名为binary search,设置两个文本框控件,一个用于显示随机生成的数组,一个用于显示找到元素的下标位置,再设置一个编辑框控件用于获取用户输入的整数,最后设置两个按钮控件,一个用于随机生成数组,一个用于开始查找。具体代码如下:
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P78_83052.jpg?sign=1739252834-CSeXVZhP2mAqZ1lrWKXZ5Yl2nZWvtdB4-0-90a5670077bf45836ae17d322c70bcd1)
运行上述程序,单击“生成”按钮。随机生成数组,然后输入需要查找的元素,单击“查找”按钮,运行结果如图3-42所示。
![](https://epubservercos.yuewen.com/3432F6/15825992705223106/epubprivate/OEBPS/Images/Figure-P79_7819.jpg?sign=1739252834-UBhRmvfaEZyQL9NWluyNrzEmkuDhbSMB-0-1ee40d48f669c80d870a32541bf1fe5b)
图3-42 运行结果
3.6 就业面试技巧与解析
本章主要讲解了Java开发基础,由于Android采用Java语言进行开发,因此Java语言掌握得好坏也能从侧面反映出Android开发者的功底。面试中面试官会问及Java基础问题,尤其是各个运算符的优先级、逻辑运算等。
3.6.1 面试技巧与解析(一)
面试官:如果忘记运算符优先级,如何保证程序运算结果的正确性?
应聘者:如果忘记运算符优先级,最简的办法是将长运算拆分成单独运算,再最后组合,当然也可以使用括号将不同的运算括起来以保证运算优先层级清晰。
3.6.2 面试技巧与解析(二)
面试官:while、do while和for 3种不同的循环是否可以混用?在什么情况下使用何种循环?
应聘者:在编程原理上,这3种循环是可以进行相互转换的。while循环一般用于不清楚何时结束的循环,do while循环则用于至少需要执行一次的循环,而for循环是使用较多的循环,它更加符合人类语言规范。