(四)运算符

学习内容

算术运算符的基本用法(掌握)

  • 运算符:对常量和变量进行操作的符号。
  • 运算符的分类
    算术运算符:+, -, *, /, %, ++, --;
    赋值运算符:=, +=, -=, *=, /=, %=;
    比较(关系或条件)运算符;
    逻辑运算符:&, |, ^, !, &&, || ;
    位运算符;
    三目(元)运算符。

算数运算符有哪些

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

  • 注意事项:
    • +号在java中有三种作用,代表正号,做加法运算,字符串的连接符
    • 整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
    • /获取的是除法操作的商,%获取的是除法操作的余数
    • %运算符
      当左边的绝对值小于右边绝对值时,结果是左边;
      当左边的绝对值等于右边或是右边的倍数时,结果是0;
      当左边的绝对值大于右边绝对值时,结果是余数;
      %运算符结果的符号只和左边有关系,与右边无关;
      任何一个正整数%2结果不是0就是1可以用来当作切换条件。

算术运算符++和–的用法(掌握)

  • ++, --运算符的作用
    • 自加(++)自减(–)运算
    • ++:自加。对原有的数据进行+1
    • –:自减。对原有的数据进行-1
  • 单独使用:
    放在操作数的前面和后面效果一样。(这种用法比较常见)
    • 参与运算使用:
      放在操作数的前面,先自增或者自减,然后再参与运算。
      放在操作数的后面,先参与运算,再自增或者自减。

算术运算符++和–的练习(掌握)

  • 请分别计算出a,b,c的值。
    int a = 10; int b = 10; int c = 10;

    a = b++;
    c = --a;
    b = ++a;
    a = c--;
    
  • 请分别计算出x,y的值?
    int x = 4; int y = (x++)+(++x)+(x*10);

  • 面试题
    byte b = 10;
    b++;
    b = b + 1;
    问哪句会报错,为什么

赋值运算符的基本用法(掌握)

  • 赋值运算符有哪些
    • 基本的赋值运算符:=
      把=右边的数据赋值给左边。
      =左边必须是变量。
    • 扩展的赋值运算符:+=, -=, *=, /=, %=
      += 把左边和右边做加法,然后赋值给左边。

赋值运算符的面试题(掌握)

  • A:案例演示
    面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
    short s=1;s = s+1;
    short s=1;s+=1;

关系运算符的基本用法及其注意事项(掌握)

  • A:关系运算符有哪些(比较运算符,条件运算符)

== 
!=
> 
>=
<
<=
  • 注意事项:
    • 无论你的操作是简单还是复杂,结果是boolean类型。
    • “==“不能写成”=”。

逻辑运算符的基本用法(掌握)

  • 逻辑运算符有哪些
    &,|,^,!
    &&,||
  • 逻辑运算符的基本用法
    注意事项:
    • 逻辑运算符一般用于连接boolean类型的表达式或者值。
    • 表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。
      算术表达式:a + b
      比较表达式:a == b(条件表达式)
  • 结论:
    &逻辑与:有false则false。
    |逻辑或:有true则true。
    ^逻辑异或:相同为false,不同为true。
    !逻辑非:非false则true,非true则false。
    特点:偶数个不改变本身。

逻辑运算符&&和&的区别(掌握)

  • &&和&的区别?
    a:最终结果一样。
    b:&&具有短路效果。左边是false,右边不执行。
    &是无论左边是false还是true,右边都会执行
    在这里插入图片描述

  • 同理||和|的区别?

  • 开发中常用谁?

    • &&,||,!

位运算符的基本用法(了解)

  • A:位运算符有哪些
    • &,|,^,~ ,>>,>>>,<<
  • B:案例演示
    • 位运算符的基本用法1
    • &,|,^,~ 的用法
    • &:有0则0
    • |:有1则1
    • ^:相同则0,不同则1
    • ~:按位取反

位异或运算符的特点及面试题(掌握)

  • 位异或运算符的特点

    • ^的特点:一个数据对另一个数据位异或两次,该数本身不变。
      在这里插入图片描述
  • 面试题:

    • 请自己实现两个整数变量的交换
    • 注意:明确指定数据的类型,默认int类型。
      在这里插入图片描述

位运算符的基本用法2及面试题(了解)

  • A:案例演示 >>,>>>,<<的用法:
    • <<:左移 左边最高位丢弃,右边补齐0(向左移动几位就是乘以2的几次幂)
    • '>>'右移 最高位是0,左边补齐0;最高为是1,左边补齐1(向右移动几位就是除以2的几次幂)
    • ‘>>>’:无符号右移 无论最高位是0还是1,左边补齐0
    • 最有效率的算出2 * 8的结果(移位直接操作二进制数)

作业

  1. 以下程序的输出结果为:
    int a = 10;
    int b = 10;
    b += a;
    System.out.prinln(b);
    答:b = b + a;答案是20。

  2. 以下语句是否都正确?如果不正确,请说明原因。
    byte b = 1; //正确
    b++; //正确
    ++b; //正确
    b = b + 1; //不正确,赋值符号右边是整型,左边是byte型,
    b += 1; //正确,b = b + 1;

  3. 以下语句是否能正常编译运行?如果不能,请说明原因;如果能,输出结果为?
    int a = 17;
    float b = 17.0F;
    int c = 2;
    System.out.println(a/c); // 结果为8。
    System.out.println(b/c); // 结果为8.5。
    System.out.println(a%c); // 结果为1。
    System.out.println(b%c); // 结果为1.0。

  4. 最终的a, b, c的值分别为:
    int a, b,
    c;
    a = b = c = 10;
    a = b++;
    c = --a;
    b = ++a;
    a = c–;
    答:a = 9, b = 10, c = 8

  5. 计算
    (1) 1 & 3 = 1
    (2) 1 & 2 = + 0
    (3) 3 | 1 = 3
    (4) 3 ^ 2 = 1
    (5) 3 ^ 2 ^ 2 = 3
    (6) -8 >> 2 = -2
    (7) 16 << 2 = 64
    (8) 16 >>> 2 = 4

  6. 已知a,b均是整型变量,写出将a,b两个变量中的值互换的程序。

    public class Operator6 {
        public static void main(String[] agrs) {
      	        int a = 10;
     	         int b = 8;
    	/*
    	1.  int temp = a;   // a :10  temp: 10      
    	     a = b;   // a:8 temp:10
     		b = temp;   // b:10
    	2.  a = a + b; // a: 18 b:8
       	  b = a - b; // a: 18 b:10
       	  a = a - b; // a: 8  b:10
    	*/
    	//3.
       	a = a ^ b; // 10 ^ 8
     	  b = a ^ b; // 10 ^ 8 ^ 8  10
    	   a = a ^ b; // 10 ^ 8 ^	10  8
     	   System.out.println("a:10 >" + a);
      	 System.out.println("b:8 >" + b);
       }
    }
    

总结

今天主要学习了运算符,主讲老师算得超级快,我上课算术速度太慢了。但是老师说了这些不重要,要把逻辑弄清楚,把运算方法搞明白。

我觉得今天最难的是位运算符。我有点不太明白,自习时间去找了助教,助教给我讲了几个例子,现在感觉还可以。

位运算符使用方法
&同1为1,否则为0
在这里插入图片描述同0为0,否则为1
^相同为0,否则为1
^一个数对另外一个数异或两次,等于它本身

明天继续努力哦~

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值