Day5:Java运算符

算术运算符

对变量进行运算的

运算符运算范例结果
+正号+77
-负号b=11;-b-11
+加号10+111
-减号10-82
*乘号7*856
/除号9/33
%取模(取余)11%92
++自增(前):先运算在取值a=2; b=++a;a=3;b=3
++自增(后):先取值在运算a=2;b=a++;a=3;b=2
--自减(前):先运算后取值a=2;b=--a;a=1;b=1
--自减(后):先取值后运算a=2;b=a--;a=1;b=2
+字符串相加"ni"+"hao""ni hao"

在%的本质上看一个公式 a % b = a - a / b * b

//自增
int j = 8;
int k = ++j; // 等价 j = j+1; k = j; 先计算后赋值
System.out.println("k="+k+"\n"+"j="+j); 
// 输出 k=9
//j = 9

int a = 9;
int b = a++;  // 等价 b = a; a = a + 1; 先赋值,后计算
System.out.println("a="+a+"\n"+"b="+b);
//输出  a = 10
// b = 10


关系运算符

关系运算符的结果都是boolean型,要么是true,要么是False;

运算符运算范例结果
==相等于8==7false
!=不等于8!=7true
<小于8<7false
>大于8>7true
<=小于等于8<=7false
>=大于等于8>=7true
instanceof检查是否是类的对象"hsp"instanceof Stringtrue


逻辑运算符

短路与&&,短路或||,取反!

逻辑与&,逻辑或|,逻辑异或^

ABA&BA&&BA|BA||B!AA^B
truetruetruetruetruetruefalsefalse
truefalsefalsefalsetruetruefalsetrue
falsetruefalsefalsetruetruetruetrue
falsefalsefalsefalsefalsefalsetruefalse

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为false时,则结果为true;

a^b:当a和b不同时,则结果为true,否则为false;

&& 和 &的区别

&&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高;

&逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低;

int a = 4;
int b = 5;
if(a > 6 && ++b < 5){
    System.out.println("执行成功!!");
}
System.out.println("a=" + a + " " + "b=" + b);  // a = 4, b = 5;

if(a > 6 & ++b < 5){
    System.out.println("执行成功!!");
}
System.out.println("a=" + a + " " + "b=" + b);  // a = 4, b = 6; 

||和|的区别

||短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为true,效率高;

|逻辑或:不管第一个条件是否为true,则第二个条件都要判断,效率低;

取反! 和逻辑异或^

 // 取反!
System.out.println(60>20);  // true
System.out.println(!(60>20)); // false

// a^b 逻辑异或,当a和b不同时,则结果为true,否则为false
boolean b = (10 > 1) ^ (3 < 5); // 第一个为成立所以为真,第二个成立所以为真,
//两个都为真,相同,所以false
System.out.println("b="+""+b);  //  b=false


赋值运算符

基本赋值运算符: = int a =10;

复合赋值运算符:

+=, -=, *=, /=, %=

a += b 等价于:a = a + b;

注意:复合运算符会进行类型转换

//复合运算符会进行类型转换
byte b = 3;
b += 2;  //等价于  b = (byte)(b+2)


三元运算符

基本语法:

条件表达式? 表达式1 : 表达式2;

如果条件表达式为true,运算后的结果是表达式1;

如果条件表达式为false,运算后的结果为表达式2;

//三元运算符
int a = 10;
int b = 99;
int result = a>b ? a++ : b--;  // 解读: 1、 a>b 为 false 2、返回b--,先返回b的值,然后在b-1
System.out.println(result);  // 99 

细节:

表达式1和表达式2要为可以赋给接受变量的类型(或可以自动转换/或者强制转换);

//表达式1和表达式2要为可以赋给接受变量的类型(或可以自动转换/或者强制转换)
int a = 3;
int b = 4;
int c = a > b ? 1.1 : 3.4;  //错误的,其中1.1和3.4是double类型的,而最后要赋值给int类型,所以不对;
int c = a > b ? (int)1.1 : (int)3.4;  // 正确,通过强制类型转换,把double 类型转换为int类型,可行;
double c = a > b ? a : b + 4;  // 正确,通过修改声明变量类型,他就自动类型转换了,
// a和b是int,int转double可行;

三元运算符可以转换为if-else;


运算符优先级

运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序;

只有单目运算符、赋值运算符是从右向左运算的;

. () {} ; ,
R ->L++ -- ~ !(data type) ----> 单目运算符
L->R* / %
L->R+ -
L->R<< >> >>> 位移
L->R< > <= >= instanceof
L->R== !=
L->R&
L->R^
L->R|
L->R&&
L->R||
L->R? :
R ->L== *= /= %=
+= -= <<= >>=
>>>= &= ^= |=

优先级从高到低的!!!

  1. ()、{}等

  2. 单目运算符++ --

  3. 算术运算符

  4. 位移运算符

  5. 比较运算符

  6. 逻辑运算符

  7. 三元运算符

  8. 赋值运算符


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值