(第四节)分析你的第一个 Android 程序 2

(第四节)分析你的第一个 Android 程序 2

0 前言

今天我们会继续分析第一节生成的程序,另外由于马上就要分析真正的代码了,得学不少基础知识,所以还会讲一下 Java 的流程控制中的 if 语句。

1 分析 app 目录

在第三讲分析了我们第一个 Android 应用程序的外部结构,发现了除了 app 目录外,别的似乎都是自动生成的。明显,app 目录内大有玄机。先来整体观察一下,主要包含【 build , libs , androidTest , java , res , AndroidManifest.xml , test , .gitignore , app.iml , build.gradle , prpguard-rules.pro 】共 11 个文件及目录。下面我们逐一分析。

1.1 build

这个文件夹外部也有,都是编译产生的缓存文件夹,我们无需过分关心也不要手动去修改。只是在发生编译器错误时把他删掉。

1.2 libs

这个文件夹是用来放置第三方 Jar 文件的。至于什么是 jar 包,以你现在的知识储备可能还理解不了,等你需要用到它时自然就知道这个是干什么的了。

1.3 androidTest

这个文件夹是用来编写自动化测试用例的,可以对项目进行一些自动化测试。我们暂时不会涉及,这个文件夹无需关心。

1.4 Java

我们的 Java 代码就放置在这个文件夹里,我们现在学的 Java 就是在这个文件夹下写。不信你看我们刚刚创建的 MainActivity 文件就在这个文件夹里。

1.5 res

这个是资源文件夹,项目里所有的图片,布局,字符串等资源都是放在这里的。里面的结构也挺复杂的,我们单独开一节来讲。

1.6 AndroidManifest.xml

这东西叫清单文件,是整个项目的主配置文件,程序里定义的四大组件,权限等都要在这里注册。他很重要也会单独开一节来讲。

Android 系统有四大组件,分别是 Activity (活动), Service(服务), Broadcast Receiver(广播接收器)和 Content Provider(内容提供器)。无论多么复杂的程序都是由四大组件构成的。一个程序你能看到的界面,都是活动;退出了仍然在后台运行的,都是活动;能被一些情景,像电话,网络状态变化等唤醒的都是广播接收器;能跨程序共享数据的,都是内容提供器。

1.7 test

这里是用来编写 Unit Test 的,另一种自动化测试的方式,我i们暂时不学习他。

1.8 .gitignore

这个文件外层也有,作用类似,用于将 app 内的制定文件或目录排除在版本控制之外。什么?你问什么是版本控制? 陈独秀同志你的凳子上有钉子吗,等我给你买个橘子#(手动滑稽)。关于版本控制,我们很久很久之后才会讲,我们先分析最主要的。

1.9 app.iml

IntelliJ IDEA 项目自动生成的文件,Android Studio 是基于 IntelliJ IDEA 社区版开发的,所以也有这个文件。我们不需要去关心或修改这个文件。

1.10 build.gradle

这个是 app 模块的构建脚本,制定了很多的构建设置。我会单独开一节来讲。

1.11 prpguard-rules.pro

这个文件用于控制混淆规则。

你可以试着反编译一些程序,会发现里面的明明都相当奇怪,难以阅读。这就是混淆的效果,主要是为了防止反向分析和破解

2 Java 的流程控制

2.1 顺序结构

任何编程语言中最常见的程序结构就是顺序结构。顺序结构就是程序至上而下执行,中间没有任何的判断和跳转。观察如下代码,这是标准的顺序结构

System.out.println("第一条语句");
System.out.println("第二条语句");
System.out.println("这是顺序结构,从上之下执行,没有任何的跳转");

2.2 分支结构

Java 提供了两种常见的分支结构:if 语句和 switch 语句。其中 if 语句用布尔表达式或布尔值作为分支条件进行分支控制;而 switch 语句这是用于对多个整型值进行匹配,从而实现分支控制。

2.2.1 if 条件语句

if 语句使用布尔表达式或布尔值作为条件来控制分支。if 语句有 3 种形式,观察三个例子:

int a = 1;
if(a < 3){
    System.out.println("a 小于 3");
}
//输出结果:a 小于 3
int a = 1;
if(a < 3){
    System.out.println("a 小于 3");
} else {
    System.out.println("a 大于或等于 3");
}
//输出结果:a 小于 3
int a = 1;
if(a < 3){
    System.out.println("a 小于 3");
} else if(a = 3){
    System.out.println("a 等于 3");
} else if(a > 3){
    System.out.println("a 大于 4");
}
//可以有无数的 else if 语句

挺简单的吧,先写个 if 然后加个括号,括号里是一个判断,括号里的表达式是真就执行条件后的花括号里的,是假就执行else后面的的语句。else 后面没有语句时, else 省略;else 后是几行代码,就加个花括号在里面写代码;else 后还要继续判断的话就再加一个 if。结合例子多看几遍,相信你会理解的。

比较运算符:
这个配合代码比较好理解,

int a = 3if(a != 0){ //新符号 != 不等于
    System.out.println("a 不等于 3");
} else if(a >= 1) { //新符号 >= 大于等于,同理还有 <=
    System.out.println("a 大于等于 1");
}

逻辑运算符:

  • &&:与,前后两个操作数必须都是 true 才返回 true ,否则返回 false
  • &:不短路与,作用与&&相同,但是不短路
  • || :或,前后两个操作数,只要有一个为 true 就返回 true ,两个都是 false 才返回 false
  • | :不短路或,作用与||相同,但是不短路
  • ! :只需要一个操作数。如果操作数为 true ,就返回 false ;如果操作数为 false ,就返回 true;就是反过来
  • ^ :异或,当两个不同时才返回 true ,否则返回 false

短路:我听到了你内心的呐喊,这特么是物理?举个例子,像用 && 连接两个条件,两个都是 true 才返回true ,换句话说,第一个是 false 就不判断第二个了,因为已经不满足条件了。这个弯道超车跳过第二个判断就叫短路。不短路就是即使第一个已经不满足条件了,仍然判断第二个。什么?你还不明白?那我就这么告诉你,你就都用 && 和 || 就完事了,等你遇到那种还需要再判断的时候,你自然就想起来了

我知道你蒙了,来看代码,其实挺容易的

int a = 2;
if(a > 1 && a <3){//条件是同时满足 a > 1 和 a <3 两个条件
    System.out.println("a 大于 1 且小于 3");
}
if(a = 0 || a > 0){//a 等于零和大于零这两个条件满足其一即可,等效于 a >= 0
    System.out.println("a 等于零或大于 0")
}
if(!a > 0){//条件是不满足 a 大于 0
    Syetem.out,println("a 不大于 0")
}
//其余的用的时候比较少,不演示了,不明白的可以留言或百度,都是很基础的一查就有一大堆。

3 总结

今天我们学会了 Android 项目中 app 文件夹下的结构。学会了最最最常用的结构 if 语句,还学了比较运算符和逻辑运算符。虽然很累但是收获满满,加油,你是最棒的!!!

欢迎关注我的公众号,
每日一文,轻轻松松带你入门 Android 开发

关注公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值