运算符
赋值运算符
语法:数据类型 变量名 = 数值/变量名
交换两个变量的值
double weigth1 = 60.5;
double weigth2 = 70.5;
System.out.println("交换之前:");
System.out.println("weigth1:"+weigth1);
System.out.println("weigth2:"+weigth2);
double weigth3 = weigth1;
weigth1 = weigth2;
weigth2 = weigth3;
System.out.println("交换之后:");
System.out.println("weigth1:"+weigth1);
System.out.println("weigth2:"+weigth2);
基本算术运算符
+、 -、 *、 /、 %、 ++、 –
-
变量A + 变量B:求出变量A和变量B相加之和。
-
变量A - 变量B:求两数之差。
-
变量A * 变量B:求两数之积。
-
变量A / 变量B:求两数之商。
-
变量A % 变量B:求余数。
-
变量A++、++变量A:求出变量A+1,等于变量A+1
-
变量A–、--变量B:求出变量B-1,等于变量B-1
int num = 326;
int hundreds = num/100;
System.out.println("百位数字是:"+hundreds);
int tens = num%100/10;
System.out.println("十位数字是:"+tens);
int ones = num%10;
System.out.println("个位数字是:"+ones);
int sum = hundreds+tens+ones;
System.out.println(num+"各位数字之和是:"+sum);
复合算术运算符
+=、-=、*=、/=、%=
- 变量A += 变量B:变量A = 变量A + 变量B
关系运算符
==、!=、>、<、>=、<=、
>、<、>=、<= 只能用作数值类型的比较
变量A == 变量B:变量A和变量B是否相等,相等的结果为true,不相等的结果为false。
逻辑运算符
逻辑运算符只能用于 boolean 类型的数据运算,判断boolean数据之间的逻辑关系,包括与、或、非这3种关系。
&、|、&&、||、!
变量A & 变量B:只有当变量A和变量B都为true时,结果为true,否则为false。
变量A | 变量B:当变量A或者变量B有一个为true时,结果为true,否则为false。
变量A && 变量B:只有当变量A和变量B都为true时,结果为true,否则为false。
变量A || 变量B:当变量A或者变量B有一个为true时,结果为true,否则为false。
!变量A:若变量A为true,结果为false,反之亦然。
条件运算符
条件运算符也叫三元运算符,可以完成给变量赋值的操作,根据不同的条件给同一个变量赋不同的值,基本语法:
变量A = 条件 ? 值1:值2,如果条件成立,值1赋给变量A,否则值2赋给变量A
得分大于80可获得优惠券
int score = 90;
System.out.println("本次答题的得分是:"+score);
String str = score>80?"获得一张优惠券":"很遗憾,没有中奖";
System.out.println(str);
位运算符
位预算符包括:&(按位与)、|(按位或)、^(按位异或)、<<(左移)、>>(右移)
变量A & 变量B:每一位的数值一一对应,若都为1,则该位计作1,否则计作0。
变量A | 变量B:每一位的数值一一对应,只要有1个为1,该位计作1,否则计作0。
变量A ^ 变量B:每一位的数值一一对应,相同计作0,不同计作1。
变量A << 变量B:变量A乘以2的变量B次方,如2 << 3,结果就是2*8。
变量A >> 变量B:变量A除以2的变量B次方,如2 >> 3,结果为2/8。
求出 10&5、10|5、10^3、2<<3、2>>3
进阶版
赋值
思考:为什么t2最后变成的了27
package day_3_23;
//: operators/Assignment.java
// Assignment with objects is a bit tricky.
import static net.mindview.util.Print.*;
class Tank {
int level;
}
public class Assignment {
public static void main(String[] args) {
Tank t1 = new Tank();
Tank t2 = new Tank();
t1.level = 9;
t2.level = 47;
print("1: t1.level: " + t1.level +
", t2.level: " + t2.level);
t1 = t2;
print("2: t1.level: " + t1.level +
", t2.level: " + t2.level);
t1.level = 27;
print("3: t1.level: " + t1.level +
", t2.level: " + t2.level);
}
} /* Output:
1: t1.level: 9, t2.level: 47
2: t1.level: 47, t2.level: 47
3: t1.level: 27, t2.level: 27
*///:
直接操作对象内的域容易导致混乱。