Thinking in java(Chapter3 控制程序流程)

一、java运算符

掌握主类型的概念、与之相对的对象的概念

1.1 同一个类的对象之间的赋值,改变的是被赋值的对象的引用

例如://n1和n2指向不同的对象

n1 = n2; //执行后,n1对象丢失,它的对象会由“垃圾收集器”自动清除 ,n1也指向n2的对象

1.2 将对象传递到方法内部时,也会产生别名现象,在方法内部对对象的修改,会影响到方法外面的对象

关于别名的详细说明见第12章


1.2 算术运算符、逻辑运算符、按位运算符、移位运算符

算术:“+”,“-”,“*”,“/”,“%”

逻辑:AND(&&) , OR(||) , NOT(!)

按位:AND(&) , OR(|) , XOR(^) , NOT(~) , 可以与等号联合使用,以便合并运算及赋值:&= , |= , ^=, 由于~是一元运算符,所以不能与=联合使用

对于布尔boolean类型,我们可以当作一种“单位”或“单比特”值对待,所以它多少有些独特的地方。

我们可以执行按位AND,OR,XOR,但不能执行按位NOT(大概是为了避免与逻辑NOT混淆)。对于布尔值,按位运算符具有与逻辑运算符相同的效果,只是它们不会中途“短路”。

此外,针对布尔值进行的按位运算为我们新增了一个XOR罗运算符,它并未包括在“逻辑”运算符的列表中。在移位表达式中,我们被禁止使用布尔运算。

移位运算符:左移位(<<), 有符号右移位(>>), 无符号右移位运算符(>>>)

左移位(<<)运算符能将运算符左边的运算对象移动运算符右侧指定的位数(在低位补0)。

有符号右移位(>>)运算符能将它左侧的数移动右侧指定的位数,若左侧数为正数,则在高位补0,若左侧为负数,则在高位补1;

无符号右移位运算符(>>>),不管它左侧是正数还是负数,都只在高位补0;(这一运算符C/C++中是没有的)//嵌入式软件中用得多,暂且不管。

1.3什么叫句柄?

类似于指针,详细说明见:http://wenku.baidu.com/link?url=Mlb0uwHany4rfzpOjO1sbLOsDkpofRGMbLgUocy-7cnsYsl3NDIK6deaDOqZXkzqz9XSq2VJT2aO8ibOI0MTCCPpOtEqXJYUcK3WE9YwOCK

1.4字符串运算符“+”

算术运算符“+”的重载,若x,y,z是int变量,则下述表达式会先将x,y,z转换成字符串形式,再连接起来,而不是先将整数值相加

System.out.println("output:"+x+y+z);


1.5运算符常规操作规则

错误示例:(如果x,y是整型变量)

while(x = y) {

//...

}

x=y运算结果是一个int数值,而编译器期望的是一个布尔值,java中,int数值不会转换成布尔值


1.6造型运算符(强制转换运算符)

将一种数据类型自动转换成另一种,例如,假设我们为浮点变量分配一个整数值,计算机会将int自动转换成float。

既可对一个变量进行强制转换,也可以对一个数值进行强制转换。

缩小转换(Narrowing Conversion):比如将long转换成int,是危险的。面临丢失信息的风险。因此必须明确造型。

但是对于放大转换(Widening conversion): 比如int转换成long, 则不必进行明确造型,因为不会丢失信息。

 以e为低的对数是10的幂次方,而不是自然对数的幂次方.

float f4 = 1e-47f; //编译器通常会将指数作为双精度(double)处理,所以假如没有这个尾随的f,就会收到一条出错提示,告诉我们必须用一个“造型”将double转换成float.

转型:假若对主数据类型执行任何算术或按位运算,只要它们比int小(如char, byte或者short), 那么在正式执行运算之前,哪些值会自动转换成int. 要把一个值赋回较小的类型,就必须使用个“造型”。而且会有信息丢失的风险。

通常,表达式中最大的数据类型是决定了表达式最终结果大小的那个类型,若将一个float值与一个double值相乘,结果就是double, int 和 long 相加,结果是long。


1.7 java中没有"sizeof()"运算符

java是一种与平台无关的语言,所有数据类型在所有机器上的大小都是相同的。

二、执行控制

if-else

while

do-while

for, for循环中的 “ ; ” ,不是逗号分隔符, 而是逗号运算符,java中该运算符仅在for循环中使用

break

continue

switch








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值