<JAVA编程思想第四版>——控制程序流程

Java 里,我们利用运算符操纵对象和数据,并用执行控制语句作出选择

3.1 JAVA运算符

运算符都能根据自己的运算对象生成一个值。此外,一个运算符可改变运算对象的值,叫“副作用”。

  几乎所有运算符都只能操作“基本类型"。但是“=”、“ ==”和“ !=”也能够操作所有对象。
  
“ =”、“ ==”和“ !=”能够操作String对象。

  3.1.1 优先级

  最好用括号明确知名优先级顺序

  3.1.2 赋值(=)

  基本数据类型直接,举例:A=B 将B处的内容复制到A处,若此时修改A的内容那么B不受影响。

  对象赋值比较特殊,举例:C=D 因为C跟D都是保存的对象的句柄(或者说地址),所以赋值完毕后C跟D都指向了最初D指向的对象。

  3.1.3 算术运算符

  加号(+)、减号(-)、除号(/,整数除法会直接砍掉小数,而不是进位)、乘号(*)以及模数(%,从整数除法中获得余数)
  3.1.4 自动递增和和递减

  对于前递增和前递减(如++A 或--A),会先执行运算,再生成值。
  对于后递增和后递减(如A++或 A--),会先生成值,再执行运算。
  3.1.5 关系运算符

  小于( <)、大于( >)、小于或等于( <=)、大于或等于( >=)、等于( ==)以及不等于( !=)
  =、!=适用于所有基本类型,其它比较不适用于boolean类型

  =、!=也应用于所有对象  

public class Equivalence {
    public static void main(String[] args) {
        Integer n1 = new Integer(47);
        Integer n2 = new Integer(47);
        System.out.println(n1 == n2);
        System.out.println(n1 != n2);
    }
}

  输出结果为:false、true

  原因为:=、!=比较的是对象的句柄,若想比较对象的内容应该使用equals()方法。当创建一个新类,euqals()方法默认比较的是对象的句柄,如果想要比较对象的内容请重写equals()方法

  3.1.6 逻辑运算符

  AND(&&)、OR(||)以及 NOT(!) 只能够应用于布尔值,而且不可将一个非布尔值当作布尔值在逻辑表达式中使用。
  短路:如果一个逻辑表达式的所有部分都不必执行下去,那么潜在性能提升是十分可观的。

  3.1.7 按位运算符

  按位运算符允许我们操作一个整数主数据类型中的单个“比特”,即二进制位。按位运算符会对两个自变量中对应的位执行布尔代数,并最终生成一个结果。

  3.1.8 一味运算符

  移位运算符面向的运算对象也是二进制的“位”。可单独用它们处理整数类型(主类型的一种)。
  <<、>> 注意补0的方式

  3.1.9 三元运算符

  布尔表达式 ? 值 0:值 1

  三元运算符虽然很简洁,但是但假若您打算频繁用它,还是要先多作一些思量—— 它很容易就会产生可读性极差的代码。
  3.1.10 逗号运算符

  应用场景:for循环

  3.1.11 字串运算符+

  3.1.12 运算符常规操作规则

int x = 1;
int y = 2;
while(x = y){
}

 上述代码编译失败,因为x是Int类型,java中无法从int转换为boolean

 3.1.13 造型运算符

 为进行一次造型,要将括号中希望的数据类型(包括所有修改符)置于其他任何值的左侧。比如:long l2 = (long)200;
 既可对一个数值进行造型处理,亦可对一个变量进行造型处理。
 缩小转换需要用户明确指明;而放大转换则不必明确造型。

  Java 允许我们将任何主类型“造型”为其他任何一种主类型,但布尔值( boolean)要除外,后者根本不允许进行任何造型处理。“类”不允许进行造型。
  1.39e-47f 的真正含义是1.39× 10 的-47次方。

  表达式中最大的数据类型是决定了表达式最终结果大小的那个类型。
 除 boolean 以外,任何一种主类型都可通过造型变为其他主类型。同样地,当造型成一种较小的类型时,必须留意“缩小转换”的后果。否则会在造型过程中不知不觉地丢失信 息。

3.2 执行控制

  3.2.1 真和假

  Java 不允许我们将一个数字作为布尔值使用
  3.2.2 if-else

  3.2.3 反复

  while(布尔表达式)先计算表达式的值,然后执行语句;

  3.2.4 do-while

  do while(表达式)至少先执行一遍语句,然后判断表达式的值

  3.2.5 for循环

  for 循环在第一次反复之前要进行初始化。随后,它会进行条件测试,而且在每一次反复的时候,进行某种形式的“步进”( Stepping)
  只有for 循环才具备在控制表达式里定义变量的能力,而且for语句中可以定义多个变量。 for(;;)类似于while(true)
   3.2.6 中断和继续

 

switch(整数选择因子):{
case 整数值1:语句;break;
case 整数值2:语句;break;
case 整数值3:语句;break;

default:语句;
}

  整数选择因子必须是Int或者char类型。对于非整数类型,必须用一系列if语句。

 

转载于:https://www.cnblogs.com/dongfangzhizi/p/6755801.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值