运算符
1、算术运算符
1、算术运算符包括:+、-、*、/、%、前++、后++、前–、后–、连接符+
2、取余运算中,结果的符号与被模数的符号相同,开发中经常使用%来判断是否被除尽的情况,举例如下:
class Compulate_tem{
public static void main(String[] args){
int n1 = 12;
int n2 = 5;
System.out.println("n1 % n2 = " + n1 % n2);
int n3 = -12;
int n4 = 5;
System.out.println("n3 % n4 = " + n3 % n4);
int n5 = 12;
int n6 = -5;
System.out.println("n5 % n6 = " + n5 % n6);
int n7 = -12;
int n8 = -5;
System.out.println("n7 % n8 = " + n7 % n8);
}
}
运行结果:
3、前++:先自增1,后参与运算
后++:先参加运算,后自增1
前–:先自减1,后参与运算
后–:先参加运算,后自减1
自增或自减不会改变本身变量的数据类型(效率高,推荐使用)
2、赋值运算符
1、赋值运算符 (推荐使用) :=、+=、-=、*=、/=、%=
2、例子:num1 += 2(num1 = num1 + 2)
3、运算时不会改变变量本身的数据类型,举例如下:
3、比较运算符
1、比较运算符:==、!=、>、<、>=、<=、instanceof(多态时学习)
2、重点区分 == 和 =,举例如下:
class Compare1{
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); //false
System.out.println(b2 = b1);//true
}
}
运行截图:
3、注意: ①、比较运算符的结果是boolean类型
②、>、<、>=、<=只能使用在数值类型之间
③、==和!=:不仅可以在数值类型之间使用,还可以在引用类型变量之间使用。
Account acct1 = new Account(1000);
Account acct2 = new Account(1000);
boolean b1 = (acct1 == acct2);// 比较两个Account是否是同一个账户
boolean b2 = (acct1 != acct2);
4、逻辑运算符
1、逻辑运算符:
a | b | a&b | a&&b | a | b | a||b | !a | a^b |
---|---|---|---|---|---|---|---|
ture | true | true | true | true | true | false | false |
ture | false | false | false | true | true | false | true |
false | true | false | false | true | true | true | true |
false | false | false | false | false | false | true | false |
2、区分& 与 &&
相同点1:& 与 &&的运算结果相同
相同点2:当符号左侧是true时,二者都会执行符号右侧的运算
不同点:当符号左侧是false时,&继续执行符号右侧的运算、&&不会继续执行符号右侧的运算。
开发中,推荐使用&&
3、|与|| 和 &与&& 的异同点相似,开发中,推荐使用||
4、逻辑运算符操作的都是boolean类型的变量,而且结果也是boolean类型
5、位运算符
1、位运算符:<<、>>、>>>、&、|、^、~
2、提问:你能否写出最高效的 2 * 8 的实现方式以及原因(空间复杂度),可以写入评论区
3、位运算符操作的是整型的数据
4、<<:在一定范围内,每左移一位,相当于*2;
>>、在一定范围内,每右移一位,相当于/2;
5、编程题:如何求一个0~255范围内的整数的十六进制,例如60的十六进制表示形式3C
答:
class Transform{
public static void main(String[] args){
int i1 = 60;
//取i1二进制表达式的后四位
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);
}
}
运行结果截图:
6、三元运算符
1、结构:(条件表达式)? 表达式1:表达式2
2、条件表达式的结果为boolean类型,如果表达式的结果为true,则执行表达式1,否则执行表达式2。
3、表达式1和表达式2的要求是一致的
4、三元运算可以改写成if-else语句,但是在开发中有优先选择三元运算符,原因是简洁,执行效率高。