时间:2019.07.25
1. 决策
- 在所有的程序中,作出决策都是一项基本决策,比如,‘如果想要输入跟多的数据,那么就需要从键盘读入另一个值’或者‘如果在银行中的存款很多,那么就去买一辆高性能的汽车,否则就需要继续乘公交车’。无论做任何决策,在编程中都需要在具有常量,变量,表达式的各种值之间进行比较的能力,然后在根据确定的执行结果执行某一组语句或另一组语句。
- 因此,理解如何做出程序决策的第一步是了解如何进行比较
1.1 比较
- 用于比较数值的六种关系运算符
项目 | Value |
---|---|
关系运算符 | 说明 |
> | 如果左边的数值大于右的操作数则产生的值为true,否则为false |
== | 如果左边的操作数等于右边的操作数,则产生的值为true,否则为false |
!= | 如果两个操作数互不相等,则返回true,否则返回false |
< | 如果左边的操作数小于 右边的操作数,则返回true,否则返回false |
复合运算符 | 略 |
- 如果想存储比较结果,则可以使用boolean类型的变量
boolean status = x-y<a+b;
status = false
1.2 if语句
- if语句的简单结构如下
if(expression) {
statement;
}
expression返回true则执行if语句内的表达式,否则,执行if语句之外的语句
我们应当坚持对语句进行缩进排列,以此作为对程序结构的提示
即使if语句内只有一条执行语句,我们也应当坚持用左右大括号将if条件的代码括起来
1.3 if else语句
if() {
//------------------------------
} else {
//------------------------------
}
1.4 嵌套的if语句
if(number%2 == 0) {
if(number < 50) {
System.out.println("you have got an even number < 50");
}
}
else语句总是从属于在同一个程序块中前面最近的并且还没有与其他else语句相匹配的那条if语句
- 例:判定字符的笨方法
public static void main(String[] args) {
char symbol= 'A';
//随机产生一个字符串
symbol =(char) (128.0*Math.random());
if( symbol>='A') {
if(symbol<='Z') {
System.out.println("得到一个大写字母"+symbol);
}else{
if(symbol>='a') {
if(symbol<='z') {
System.out.println("该字符是小写字母"+symbol);
}else {
System.out.println("你得到的不是一个字母"+symbol);
}
}else{
System.out.println("该字符不是一个字母");
}
}
}else{
System.out.println("该字符不是字母");
}
}
1.4 比较枚举值
- 我们不能够使用比较运算符来对枚举类型中的变量相互比较,但是可以使用每个枚举类型提供的方法。
- 例:
//定义枚举的类型
enum Season { spring, summer, fall, winter }
//初始化season类型中的变量
Season s = Season.summer;
//检查season变量当前存储的值
if(s.equals(Season.spring)) {
//-----------------------
}else {
//-----------------------
}
2. 逻辑运算符(logical operator)
2.1 运算符
- 使用逻辑运算符连接值为true或者false的多个表达式,针对Boolean量进行运算,所以也叫作布尔运算符(boolean operator)
符号 | 全名 | 符号 | 全名 |
---|---|---|---|
& | 逻辑与 | 百度 | 条件或 |
&& | 条件与 | ! | 逻辑非 |
一个竖线 | 逻辑或 |
*按位运算符 & 和 | * 与 && 和 || 有些微妙的不同之处
- AND运算符 && 或 & 用于逻辑表达式均为true时结果才为true
2.2 运算符 && 和 & 的区别
- &&逻辑运算符,如果左边的表达式被确定为false,就不在对右边的表达式进行求值
- & 条件运算符,需要对整个逻辑表达式进行求职,即使左边为false,也会对右边进行求值
- 第一种,如果将&替换为&&,count只在左边成立时才加一
if(++value% == 0 & ++count < limit) {
//Do something
}
- 第二种,将&&替换为&,如果count=0,程序会执行右边的代码,如果没有代码来阻止,则会抛出异常
if(count>0&& total/count>5) {
//Do SomeThing
}
2.3 逻辑或运算: || 和 |
- 表达式均为false时结果才为false,表达式有一个为true时结果才为true。
2.4 逻辑非运算: !
- 将操作数的布尔值求反
2.5 条件运算符
older = yourAge > MyAge ? youAge : myAge;
2.6 switch语句
- switch表达式的值
- jdk1.6: byte, short, int, char, 枚举型的常量
- jdk1.7新增: String
3. 变量的作用域
- 局部变量从它们被声明的地方开始,一直包含到这个声明的语句块的结尾均可被访问。
- 类变量:拥有较局部变量更长的生命周期,在标准类库Math中的变量PI就是类变量的例子,只要程序执行,这些变量就存在。
- 实例变量:这些变量是类对象的一部分(instance variable)