- 赋值运算符和比较运算符
比较运算符比较简单,主要注意 **“==”和“=”**的区分
换言之:"=“表赋值;”=="表判断
区分可以用下列代码示范
代码:
*/
class CompareTest {
public static void main(String[] args)
{
int i = 10;
int j = 20;
System.out.println(i == j);//false
System.out.println(i = j);//赋值。结果是20
boolean b1 = true;
boolean b2 = false;
System.out.println(b1 == b2);
System.out.println(b2 = b1);
}
}
-
逻辑运算符:主要区分逻辑符和短路符
以&(与)为例
a. 区分 & 与 &&
//相同点:a.二者运算结果相同;b.当符号左边是true时,二者都会执行符号右边的运算。
//不同点:当符号左边是false时,&继续执行符号右边的运算。而&&不再执行符号右边的运算。
b. 区分:|与||
//相同点:运算结果相同;当符号左边是false时,二者都会执行右边运算
//不同点:当符号左边是true时,|会继续看符号右边,||不会看符号右边 -
位运算符
位运算符操作的都是整型的数据
“<<”:在一定范围内,每向左移动1位,相当于*2;
“>>”在一定范围内,每向右移动1位,相当于/2
面试题:
最高效的计算 2 * 8? A: 2 << 3 或者 8 << 1
对于乘法,遇到高效运算,凡是和2有关的,优先考虑位运算符
对于位运算符,从底层二进制去看原理。
&两端是用逻辑运算符还是位运算符要看符号两边的情况。
如果是boolean:逻辑。数字:位。
- 三元运算符(注意和if-else的区分,主要在格式上,if-else所涉及的范围更广)
1.结构:(条件表达式)?表达式1:表达式2
2.说明
①条件表达式的结果为boolean类型
②根据条件表达式真或假,决定执行表达式1,还是表达式2
如果表达式为true,则执行表达式1;
如果表达式为false,则执行表达式2.
③表达式1和2可以不是一个类型,但是需要同一个类型接收
④三元运算符可以嵌套使用
*/
今日代码:
```java
class SanYuan{
public static void main(String[] args) {
// 获取两个整数的较大值
int m = 12;
int n = 5;
int max = ( m > n)? m : n;
System.out.println(max);
double num = (m > n)? 2 : 1.0;
//*********************
String maxStr = ( m > n )? "m大":"n大";
//开始嵌套
n = 12;
String maxstr = (m > n)?"m大":((m == n)?"m和n相等":"n大");
System.out.println(maxstr);
//获取三个数的最大值
int n1 = 12;
int n2 = 34;
int n3 = -145;
int max1 = (n1 > n2)?n1:n2;
int max2 = (max1 > n3)?max1:n3;
System.out.println("三个数中最大的数是" + max2);
习题1:已知一个数60,把它转变为十六进制(3C)
代码
class test {
public static void main(String[] args){
int i1 = 80;
int i2 = i1 & 15;
String j = (i2 > 9)?(char)(i2 - 10 +'A')+" ": i2 + "";
int temp = i1 >>>4;
i2 = temp & 15;
String k = (i2 > 9)?(char)(i2 - 10 +'A')+" ": i2 + "";
System.out.println(k + "" + j);
}
}