Java第三天

一.位运算符:
1.按位与“&”:对两个数的每一位,进行与运算。与运算的特点是“有零出零,全一出一。”
2.按位或“|”:对两个数的每一位,进行或运算。或运算的特点是“有一出一,全零出零。”
3.按位异或“^”:对两个数的每一位,进行异或运算。异或运算的特点是“不同出一,相同出零。”
4.按位取反“~”:对两个数的每一位,进行取反运算。
5.按位左移运算符“<<”:左操作数按位左移右操作数指定的位数,左移后补零。
6.按位右移运算符“>>”:左操作数按位右移右操作数指定的位数,右移后补符号位。
7.按位右移补零操作符“>>>”:与按位右移大致相同,只不过右移之后补充的是0,而不是符号位。

因为Java中左移补得都是0,不涉及符号位相关操作,故Java中没有左移补零操作符。
同时,Java中的左移和右移可以看做是对被移动的数的绝对值进行的放大和缩小,即对于正数而言,左移放大,右移缩小;对于负数而言,右移放大,左移缩小!放大缩小倍数即是2的移动位数次方,这一点可以用来进行优化计算,是面试中的常见问题!
例如:a*4就可以用a<<2来进行优化。
注意:右移的缩小对于计算机中的正数而言,最小只能缩小到0,对于负数而言,右移最大只会放大到-1。此外当右移缩小或者扩大结果不为正数时,那么此时右移得到的结果是对于原数值缩小或者放大后的取整操作(取整操作是指得到不大于这个数的整数)
例如:-9 1111 0111右移一位后的结果不是-4.5而是-5;+9 0000 1001右移一位后的结果不是+4.5,而是+4。
二.逻辑运算符
逻辑操作符的对象是布尔变量或者布尔等式。
1.逻辑与运算符“&&”:当且仅当两个条件都为真时才为真。
2.逻辑或运算符“||”:两个条件中只要至少有一个为真就是真。
3.逻辑非运算符“!”:用来对操作数的逻辑状态取反,如果原条件为true,操作后为false,反之同理。

例:A为false,B为true,!(A&&B)的结果是?
答案:true。因为A B当中有一个是false,那么A&&B的结果就是false,然后!表示取反,故答案为true。
同时逻辑与还具有一个类似短路的功能。就是如果逻辑与在运算过程中,左边的操作数如果是false的情况下,那么右边的操作数直接不会运转,这会对一些例如++ --之类的操作带来影响!这一点对于逻辑或也是一样的,如果逻辑或操作符的第一个变量为true的话,那么由于运算结果必为true,所以运算时不会计算右边的布尔式。(面试之中可能会对此进行考察)
例:int a=5;
int b=10;
boolean flag1=a>b&&a++>2;
System.out.println(flag1);
System.out.println(a);
boolean flag1=a<b&&a++>2;
System.out.println(flag2);
System.out.println(a);
该程序的输出结果分别是 false 5;true 6。
解析:第一部分的逻辑与运算中由于“a<b”是false,故可以直接断定逻辑运算的结果必为false,故后面的“a++>2”根本没有参与到程序运行之中就判断出了结果是false,也就是说在程序运行的过程中根本没有进行a++的运算,故a依然是5;而在下一部分的逻辑运算中,由于“a<b”是true,故需要对“a++>2”进行一次运算以进行判断。所以a++的运算被进行了,故在该程序运行过后a的数值会像a++加一。
*三.赋值运算符“=”:
赋值运算符的作用是去给变量赋值,将一个数据赋给变量。
1.复合运算符:
“+= -= = /= %= <<= >>= &= |= ^=”

复合运算符的强制转变数据类型的特性:
例如:short a=5;
a=a+5;
a+=5;
以上代码中,编译过后会a=a+5会编译错误,因为在byte char short的运算时会自动转变成int格式,a+5就是一个int类型的值,但是a却是一个char类型的值,这会导致类型不匹配。但是a+=5,则不会,还是保持着char类型。
举例理解复合赋值运算符含义:
a+=5:a=a+5; a<<=2:a=a<<2。其余复合赋值运算符也可以以此类推。
四.三目运算符:
语法:布尔表达式?数1:数2 若布尔类型的值为true,那么结果就是数1,反之结果就是数2。

例:int a=2;
int b=5;
int c=(a>c)?3:4;
结果是4,因为a>c是false。
五.运算优先级:
优先级:
1 () [] {} 从左向右
2 ! ~ ++ – 从右向左
3 * / % 从左向右
4 + - 从左向右
5 << >> >>> 从左向右
6 < <= > >= instanceof 从左向右
7 == != 从左向右
8 & 从左向右
9 ^ 从左向右
10 ! 从左向右
11 && 从左向右
12 || 从左向右
13 三目运算符 ? : 从右向左
14 复合赋值符 从右向左

六.Java中的条件语句:
1.if结构
语法1.
if(布尔表达式){
//满足布尔表达式为真会执行的代码
}else·{
//满足布尔表达式为假会执行的代码
}
语法2.
if(布尔表达式1){
//满足布尔表达式1为真会执行的代码
}else if(布尔表达式2){
//满足布尔表达式2为真会执行的代码
}else·{
//既不满足布尔表达式1为真也不满足布尔表达式2为真会执行的代码
}
2.switch……case……语句
switch(express){
case a{
表示express为a时执行的语句
break;
}
……
default:
{
表示当express的值不与前面任何一个case匹配时所执行的语句。
break;
}

}
注意:switch case结构里边每一句都不要忘掉break,break的作用是跳出整个结构,如果没有break的话,程序会把所有分支都执行下去!
以上是我对Java第三天学习的总结,如果有什么错误还望各位读者指出,在此表示感谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值