第三章控制程序流程

  第三章 控制程序流
1:使用Java操作符

操作符接受一个或多个参数,并生成一个新值。
 操作符可能会改变操作数自身的值,这被称为side effect。
 注意:使用此类操作符生成的值,与使用没有副作用的操作符生成的值,没有什么区别。
(1)优先级
(1)赋值
 = 他的意思是“取得右边的值,把它复制给左边”。
 注意左值必须是一个明确的,已命名的变量。即:将一个常数赋给一个变量。不能是左值是常量:4=a;
一般情况下(基本类型存储的值):
 a = b;意味着b的内容就复制给a。若接着又修改a,那么b不受影响,因为它实际上是直接将一个地方的内容复制到另一个地方。并不是对同一个空间的进行操作。
但特殊情况(对对象进行赋值时):对一个对象进行操作时,我们真正操作的是对对象的引用(reference)。所以倘若“将一个对象赋值给另一个对象”,实际是将引用从一个地方复制到另一个地方。这意味着假若对对象使用“c=d”,那么c和d都指向原本只有d指向的那个对象。
这种特殊的现象通常称为:aliasing(别名现象)
 (a)方法调用中的别名问题。

(2)算术操作符(mathematical operator)
 + - * / %
 注意:整数除法会直接去掉结果的小数位,而不是四舍五入。
(3) 正则表达式
 java.util.regex.pattern.
grneral terms(通用术语) :
 -?
 一个数位用'/d'表示,但在java中“/”要两个才能显示(转义)"//d"
 -?\\d+可能有负号数字有一个或多个。
(a)一元加减操作符:(一元加减号用于改变数据的符号)
 x = -a;
 x = a * -b;  equals x = a * (-b);
(4) 自增自减increment decrement
 i++ ++i
 i-- --i
(5) 关系运算符relational operator
 关系操作符号生成一个"Boolean"结果,他们计算的是操作对象之间的关系。
> >= < <= == !=
(a):测试对象的等价性。
 对象是一个引用。只有基本类型可以用==,!=,否则equals()。
(6) 逻辑运算符logical operator
 && || !
(a)short-circuiting:短路
 获得潜在的性能提升。
(7) 位操作符bitwise operator.
 位操作符允许我们操作一个基本数据类型中的整数型的单个“bit”,即二进制位。位操作符会对两个参数对应的位操作执行布尔代数运算,并最终生成一个结果。
 原理:
 如果两个输入位都是1,则按位“于“操作符(&)生成一个输出位1;否则生成一个输出位0;
 如果两个输入位里只要有一个是1,则按位"或",操作符(|)生成一个输出位1;只有在两个输入位都是0的情况下,他才会生成一个输出位0。
 如果两个输入位的某一个是1,但不全是1,那么”异或“操作符(^)生成一个输出位1。(以上都是二元操作符)
按位"非"属于一元操作符;他只对一个操作数进行操作。
**
位操作符和逻辑操作符都使用了同样的符号。
位操作符可与等号联合使用,以便合并运算操作和赋值操作:
 &= |= ^= 一元位运算符~不能被联用。
  
 
(8) 移位操作符(shift operator)
 god of field
 << <<= >> >>= 
 >>> >>>= <<< <<<=
(9) 三元操作符(if else)
 boolean -exp? value0 : value1
 -exp 是true,最终结果为value0,否则是value1

(10) 逗号操作符(comma operator)
 用法:函数分隔,作为后续计算的一个操作符。在java中,需要用到逗号的唯一场合就是for循环。
(11) 字符串操作符+
 特殊用途:连接不同的字符串。
一个特殊点:
 int i = 0,j = 1, k = 2;
 String s = "X,Y,Z";
 System.out.println(s+i+j+k);//xyz012
 System.out.println(i+j+k+s);//3
 System.out.println(i+j+s+k);//1xyz2
(12) 使用操作符时常犯的错误
 (a)优先级不确定,没有用括号来确定。
 (b)=赋值运算使用错误。或与==混淆。
(13) 类型转换操作符(casting operator)
 (a)直接常量(Literal)
 如果在一个程序里使用了literal,编译器可以准确的直到要生成什么样的类型,但有时却模棱两可,如可发生这种情况,必须对编译器加以适当的"指导",用于直接搭配某些字符来增加一些信息。
**********
 Base 16 :使用于所有整数数据类型,以一个前缀0x或0X来表示,后面跟随0~9或大小写的a~f。
如果试图将一个变量初始化超出自身表示范围的值(无论这个值的数值形式如何)。
如果超出范围,编译器会将其值自动转换成一个int。(小范围到大范围是会报越界错误)
**********
 Base 8:是有前缀0以及后续的0~7的数字组成的。
*
直接常量后面的后缀字符标志了它的类型。
 若为大写或小写的L,代表long;
 若为大写或小写的F,代表float;
 若为大写或小写的D,代表double; 
*
指数总是采用一种很不直观的记号方法:1.39e-47f.
 与C和C++不同,在java中1.37*10^(-47)。
**********
提升(Promotion)
 类型转换自动向大跃迁。
(14) java没有'sizeof'
 sizeof();获取为数据存储分配的字节数。在c和c++中。
(15) 再论优先级(precedence)
 **********有点弄不清楚。
(16) 操作符总结。
 

 

2:流程控制
 true和false
 if-else
 迭代(iteration)
 break和continue
 开关(switch)

关键字:if else ,while , do while , for ,switch case.
 (1)true和false
for example: if(a!=0)
 (2)if-else
好用法:return.
 (3)迭代(iteration)
关键字:while,do-while,for。
********
while(Boolean-expression){
 statement}
********
 do
    statement
 while(Boolean-expression);
注意:while和do-while 的区别是do-while 的语句至少执行一次。
********
for(initialization ; Boolean-expression;step)
 statement
 (4)break和continue
 break:用于强行退出循环,不执行循环中剩余的语句。
 continue:则停止执行当前的迭代,然后退回循环起始处,开始下一次迭代。
 (5)开关(switch)
根据一个整数表达式的值,swith语句可以从一系列代码中选出一段去执行。
 switch(integral-selector){
  case
integral-value1 :statement ; break;
  case integral-value2 :statement; break; 
  case integral-value3 :statement; break;
  default : statement; 
 }
integral-selector: 是一个能够产生整数数值的表达式。
swith 能将integral-selector的结果与每个整数值(integral-value)相比较。若发现相符,就执行对应语句。若没有发现相符的,就可执行default语句。
*省列break;将会继续执行后面的case,直到default。

switch语句是实现多路选择的一种干净利落的方法。
计算细节:
Math.random()输出值范围:[0,1).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值