控制程序流程
Java运算符
- 所有运算符都能根据自己的运算符对象生成一个值。
- 一个运算符修改可变运算对象的值,叫作“副作用”,运算符最常见的用途就是修改自己的运算对象,从而产生副作用,但是生成的值亦可没有副作用的运算符生成。
- 几乎所有的运算符都只能操作“主类型”,唯一的例外是"
=
","==
","!=
"可以作用域所有对象。 String
类支持“+
”,“+=
”。
运算符优先级
运算符优先级决定了存在多个运算符时一个表达式各部分的计算顺序
其中顺序为:一元运算符(++,-- + -
)>
算术运算符和移位运算符(+ - * / << >> >>>
)>
关系运算符(>,<,>=,<=,==,!=
)>
逻辑运算符和按位运算符(&&, ||, & ,|, ^
)>
三元运算符 >
赋值和复合赋值(=, +=,...
)
赋值
- 赋值用等号运算符(
=
)进行的,意思是“取得右边的值,把它复制到左边”;右边的值可以是任何常数、变量或者表达式,只要能产生一个值。 - 左边的值必须是一个明确的、已命名的变量。也就是说它必须有一个物理性的空间来保存右边的值。
- 对主类型的赋值,是对值的赋值,对赋值后的值的修改并不会影响原来的值;而对对象的赋值是句柄的复制,对赋值后的对象进行操作会改变原来对象的值。
算术运算符
- java基本算术运算符与其他大多数程序设计语言是相同的。
有+
、-
、*
、/
、%
基本算术运算符。 - 一元加、减运算符,一元减号和加号运算符和二元加减运算符时相同的运算符(在运算过程中,避免混淆需要明确用花括号区分);一元加号不做任何事情,一元减号得到运算对象的负值。
- 自动递增和递减;自动递增和递减分为前递增,前递减和后递增,后递减;前递增,前递减会先改变运算符的值,再使用运算符的值,后递增,后递减会先使用运算符的值,再运算。
关系运算符
- 关系运算符会生成一个“布尔”(
boolean
)的结果,它们评价运算对象值之间的关系;若关系是真实的,关系表达式生成true
(真);若关系不真实,则生成false
(假)。 - 关系运算符有大于(
>
),小于(<
),大于等于(>=
),小于等于(<=
),等于(==
),不等于(!=
),其中等于(==
)和不等于(!=
)适用所有内建的数据类型,但其他比较不适用于boolean类型。 - 等于(
==
),不等于(!=
)用于主类型比较时,比较的是值;比较对象时,比较的是对象的句柄,而不是对象的内容;若要比较对象的内容则使用equals
来比较,但是equals
不适用“主类型”和自定义对象(主类型使用==
,!
,=
);自定义对象的equals
系统默认比较的是句柄,如果要比较内容,需要自己重写它。
逻辑运算符
-
逻辑运算符 AND(
&&
),OR(||
),NOT(!
)能生成一个布尔值(true
,false
)–以自变量的逻辑关系为基础。 -
不可将非布尔值当做布尔值在逻辑关系中使用。
-
逻辑运算符是短路运算的,也就是说只有明确得出整个表达式真或假的结论,才会进一步对表达式进行逻辑求值,如:
if (test(0) && test(1) && test(2))
只有明确
test(0)
的值为真(true
),才会对test(1)
进行逻辑取值。 -
按位运算符,按位运算符操作一个整数主类型中的单个“比特”,即二进制位。按位运算符会对两个自变量对应的位执行布尔代数,并最终生成一个结果。
4-1. 按位运算符: 按位与AND(
&
),按位或OR(|
),按位异或XOR(^
),按位非NOT(~
)。4-2. AND(
&
)输入都是1,生成1,否者0;OR(|
)输入位全部是0,生成0,否者1;XOR(^
)输入位一个是0,一个是1生成1,否者0;NOT(~
)属于一元运算符,只对一个自变量进行操作;生成相反的值,0变成1,1变成0.4-3. 按位运算符只使用了一个字符。
4-4. 按位运算符可以和等号(
=
)联合使用,以便合并运算及赋值。4-5. 按位运算符可用于布尔值运算,具有与逻辑运算符相同的效果,但是不会短路。有一点需要注意的是NOT(
~
)不能使用于布尔值。
移位运算符
- 移位运算符面向的运算对象是二进制的“位”。可单独使用它们处理整数类型.
- 左移运算符(
<<
)能够将运算符左边的运算对象向左移动运算符右侧指定的位数(低位补0);“有符号”右移运算符(>>
)则将运算符左边的运算对象向右移动运算符右侧指定的位数(正值高位插入0,负值高位插入1);“无符号”右移运算符(>>>
),则会在高位插入0,无论正负值。
三元运算符
布尔表达式 ? 值0 : 值1
;
逗号运算符
java中逗号运算符只用在for
循环中
字符串+
- 连接字符串,会把它们拼接在一起
- 字符串和其他不是非字符串的值,会把非字符串的值变成字符串再拼接。
造型运算符
- “造型”(Cast)的作用是“与一个模型匹配”,在适当的时候会将一种类型数据自动转换成另一种。
- 我们可以将任何主类型“造型”成其他任何一种主类型,但
boolean
除外;一个较小的主类型“造型成”较大的主类型,不必明确进行(编译器会自动进行,其转换规则:char,byte,short-int;float-double, int - long
). - 对象可以“造型”到类型“家族里”(上溯造型)。
执行控制
真假
所有条件语句都利用条件表达式的真或假来决定执行流程。
if-else
if (布尔表达式)
语句
else
语句
if-else语句可以嵌套使用
return
return用在方法中可以返回值和中断函数
循环
while
,do-while
,for
,其中do-while
至少执行一次。
循环中断和继续
break
退出循环,不执行循环中剩余的部分。continue
停止执行当前的循环,重新开始下一次的循环反复。break lablel1: break
标签会中断循环,回到标签处,标签后的循环都不会执行。continue lable1:continue
标签会停止当前循环,回到标签处,但是还是会进入到标签后的循环,此时会跳过递增,直接递增。
switch
switch(整数选择因子) {
case 整数1:语句;break;
case 整数2:语句;break;
//...
default:语句;
}
其中case
后面的break
是可选的,当不加break
时,case
后面的语句执行完成后,会继续执行下一个case
直到遇到break
或default
。