学习内容
算术运算符的基本用法(掌握)
- 运算符:对常量和变量进行操作的符号。
- 运算符的分类
算术运算符:+, -, *, /, %, ++, --;
赋值运算符:=, +=, -=, *=, /=, %=;
比较(关系或条件)运算符;
逻辑运算符:&, |, ^, !, &&, || ;
位运算符;
三目(元)运算符。
算数运算符有哪些
+, -, *, /, %, ++, –
- 注意事项:
- +号在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的结果(移位直接操作二进制数)
作业
-
以下程序的输出结果为:
int a = 10;
int b = 10;
b += a;
System.out.prinln(b);
答:b = b + a;答案是20。 -
以下语句是否都正确?如果不正确,请说明原因。
byte b = 1; //正确
b++; //正确
++b; //正确
b = b + 1; //不正确,赋值符号右边是整型,左边是byte型,
b += 1; //正确,b = b + 1; -
以下语句是否能正常编译运行?如果不能,请说明原因;如果能,输出结果为?
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。 -
最终的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 -
计算
(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 -
已知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 |
^ | 一个数对另外一个数异或两次,等于它本身 |
明天继续努力哦~