【1基础语法】3-运算符

一级目录

二级目录

三级目录

1 算术运算符

+,-,*, / 、% 、++ 、 –

1.1 +号

  1. 正数
  2. 加号
  3. 连接符号
System.out.println(+20); // 表示 正数
System.out.println(3+4); // 两数相加
System.out.println("Hello" + 666);  // 拼接

1.2 - * / %

System.out.println(5-3); // 2
System.out.println(-3);  // -3
System.out.println(5*3); // 15
System.out.println(5/3); // 1
System.out.println(5%3); // 2
System.out.println(2%4); // 2

System.out.println(5/(double)3); // 1.666667
System.out.println((double)5/3); // 1.666667

1.3 ++/–

++ – 属于单目运算

++ 表示自增1

– 表示自减1

单独使用

​ 表示自增或者自减,没有任何的区别

public static void main(String[] args)
{
    int a = 10;
    int b = 20;
    // a = 10 b = 20
    System.out.println("a = " + a + " b =  " + b);
    //a ++;
    //b --;
    // a = 11 b = 19
    //System.out.println("a = " + a + " b =  " + b);

    ++ a ;
    -- b ;
    // a = 11 b = 19
    System.out.println("a = " + a + " b =  " + b);
}

参与运算

  1. 如果++放在操作数的左边,就表示先自增再参与运算
  2. 如果++放在操作数的右边,就表示先参与运算然后在自增1或者自减1
// ++ -- 参与运算
int a1 = 3;
int a2 = 4;
int result = (a1++)/3 + (--a2)*2 -(a1--)%6 + (a2++)*3 - (a2--);
System.out.println("a1=" + a1 + "  a2="+a2 + " result="+result);

课堂练习:

  1. int x = 3; int res = (x++)%(++x) 请推断res的值,及x此时的值
  2. int n = 5; n=++n + ++n 求n的值
  3. int n = 3; n= ++n + n ++;求n的值

2 赋值运算符

普通的 =

扩展的 += -+ *= /= %=

public static void main(String[] args)
{
    // 赋值运算符 这个不是==赋值语句
    int a = 10 ; // 表示将常量10赋值给变量a地址所对应的内存区域中

    a += 3; //等价于a = a + 3
    System.out.println(a);

    a -= 3; // 等价于 a = a - 3;
    System.out.println(a);	
}

面试题1: short s1 = 1 ; ? s1 = s1 + 1; 有什么错?

​ short s1 = 1; s1 += 1; 又有什么错?

short s1 = 1;
s1 = s1 + 1; // 报错 需要强制类型转换
s1 += 1; // 不会 += 会帮助我们自动完成强制类型转换

面试题2:如何交换两个数?

int x = 10;
int y = 20; // 互换x和y的值

int c = x;
x = y;
y = c;

解决方案:声明一个中级变量即可

3 关系运算符

> < >= <= != ==

关系运算符得到的结果都是boolean类型的数据(true和false)

public static void main(String[] args)
{
    int a = 10;
    int b = 20;

    System.out.println(a > b) ; // false
    System.out.println(a < b) ; // true
    System.out.println(a >= b) ; // false
    System.out.println(a <= b) ; // true
    System.out.println(a != b) ; // true
    System.out.println(a == b) ; // false

}

4 逻辑运算符

​ 连接多个boolean类型的表达式

boolean类型的表达式1 boolean类型的表达式2 boolean类型的表达式3 boolean类型的表达式4

4.1 位逻辑运算符

二进制运算

按位与(&):两边都是1才是1,其他都是0(有0为0)

按位或(|):两边都是0才是0,其他都是1(有1为1)

异或(^):两边不同为1,同为0(同0异1)

public static void main(String[] args)
{
    int a = 10;
    int b = 20;
    // 按位 & 都为true 结果 true
    System.out.println((a > b ) & (a < b)) ; // false &  true = false
    System.out.println((a < b ) & (a > b)) ; // true & false = false
    System.out.println((a < b ) & (a < b)) ; // true & true = true
    System.out.println((a > b ) & (a > b)) ; // false & false = false
    System.out.println("----------------------------");
    // 按位 | 有true 就为true
    System.out.println((a > b ) | (a < b)) ; // false |  true = true
    System.out.println((a < b ) | (a > b)) ; // true | false = true
    System.out.println((a < b ) | (a < b)) ; // true | true = true
    System.out.println((a > b ) | (a > b)) ; // false | false = false
    System.out.println("----------------------------");
    // 按位 异或 相同为false 不同为true
    System.out.println((a > b ) ^ (a < b)) ; // false ^  true = true
    System.out.println((a < b ) ^ (a > b)) ; // true ^ false = true
    System.out.println((a < b ) ^ (a < b)) ; // true ^ true = false
    System.out.println((a > b ) ^ (a > b)) ; // false ^ false = false

}

按位符号也会运用在位运算,位运算操作要比普通运算的效率要高很多

&:有0取0,否则取1
1001 & 0110 = 0
    1 0 0 1
 &  0 1 1 0
 ----------
    0 0 0 0  

|:有1取1,否则取0
1001 | 0110 = 15
    1 0 0 1
 |  0 1 1 0
 ----------
    1 1 1 1 

^:相同为0 不同为1    
1001 ^ 0110 = 15
    1 0 0 1
 ^  0 1 1 0
 ----------
    1 1 1 1 

4.2 短路逻辑运算符

&& 短路与

|| 短路或者

! 非

& 表示按位与,无论什么情况都会同时计算运算符两边的表达式

&& 表示短路与,如果前面的表达式为false,那么无论后面的表达式结果如何,都不会去计算后面表达式的值。因为后面表达式的值不会影响结果

同时注意:在实际使用中我们很少使用按位与,更多的是使用短路与

!:取反

​ 当!的个数是奇数个的时候,结果相反

​ 当!的个数是偶数的时候,结果不变

`面试题:& 与 && 的区别

  1. & 表示按位与,无论什么情况都会同时计算运算符两边的表达式
  2. && 表示短路与,如果前面的表达式为false,那么无论后面的表达式结果如何,都不会去计算后面表达式的值。因为后面表达式的值不会影响结果
  3. && 开发中使用,&基本不使用
  4. &常用与位运算操作,效率高

5 位运算符

位运算符:用来计算二进制的运算符

& | ^ ~
有符号移动:<< >>
无符号移动:>>> 、<<<
eg:4>>1,结果为2

6条件运算符

条件运算符又称为三目运算

格式: X ? Y : Z ;
X 表达式必须是boolean类型的表达式
计算流程:
     1. 首先计算X的值
     2. 如果Xtrue,那么整个表达式的结果就是Y的值
     3. 如果Xfalse,那么整个表达式的结果就是Z的值

【上一篇】:【1基础语法】2-标识符-数据类型及转换

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值