03运算符

一、算术运算符

运算符含义A = 20B = 10A 运算符 B
+求和201030
-相减201010
*相乘2010200
/相除20102
取余20100
++左自增A++;21B++;11C = A++;20
++右自增++A;21++B;11C = ++A;21
--左自减A--;19B--;9C = A--;20
--右自减--A;19--B;9C = --A;19

注意事项:

1. 先乘除,后加减
2. 从左至右运行
3. 除数不能为0

1.1 小括号的使用

1. Java的表达式中,只有小括号“()”,无中括号“[]”和大括号“{}”
2. 先运算小括号里面的内容。优先级最高的是小括号。
3. 好习惯,表达式较复杂时,多多使用小括号包裹。

1.2 +

// 1. 数字运算符
int a = 1 + 1; 
// 2. 字符串拼接
String str = "www." + "baidu." + "com";
// 3. 正数(常省略)
int b = 1; 

1.3 ++(–)

int num1 = 10;
// 1. 左自增(减)时:先赋值,后运算。
int num2 = num1++; // 结果:num1 = 11,num2 = 10。
// 2. 右自增(减)时:先运算,后赋值。
int num3 = ++num1; // 结果:num1 = 12,num2 = 12。
// 3. 常使用赋值运算符替换。
num1++; // 非要使用时,单独成行
num1 += 1; // 使用赋值运算符替换
// 4. 自增减运算符和赋值运算符时,系统会自动强转。
byte b1 = 65;
byte b2 = b1 + 1;// 结果:报错。原因:整型时,JVM先转换为int。

byte b3 = ++b1; // 结果:b3=66。
byte b4 = (b1 += 1); // 结果:b4=66。
// 原因:系统会自动强转。 b3 = (byte)(b1 + 1); b4 = (byte)(b1 + 1);

常见面试题

int num = 5;
int ret = num++ * ++num;
/*
 1. num++:num=6。先赋值,后自增。int ret = 5 * ++num;
 2. ++num:num=7。先自增,后赋值。int ret = 5 * 7;
 3. 结果:num = 7 , ret = 35。
*/
int num = 5;
++(num++);
// 编译报错。原因:小括号结果是常量,常量不可进行自增自减运算。

二、赋值运算符

运算符含义a = 20, b = 10(0000 1010)结果
=赋值c = a + bc = 30
+ =先相加,后赋值b + = a 等价于b = b + a30
- =先相减,后赋值b - = a等价于b = b - a-10
* =先相乘,后赋值b * = a等价于b = b * a200
/ =先相除,后赋值b / = a等价于b = b / a0.5
%=先取模,后赋值b %= a等价于b = b % a0
<<=先左移位,后赋值b << = 2等价于b = b << 20010 1000
>>=先右移位,后赋值b >> = 2等价于b = b >> 20000 0010
&=先按位与,后赋值b &= 2等价于b = b&20000 0010
^ =先按位异或,后赋值b ^= 2等价于b = b ^ 20000 1000
| =先按位或,后赋值b |= 2等价于b = b | 20000 1010

三、逻辑运算符

运算符含义abc = a 运算符 b
&&与,同真则真、遇假则停truetruetrue
||或,有真则真 、遇真则停truefalsetrue
!取反-truefalse
&与,同真则真truetruetrue
|或,有真则真truefalsetrue

四、关系(比较)运算符

运算符含义A = 20 , B = 10结果
==是否相等A == Bfalse
!=是否不相等A != Btrue
>是否大于A > Btrue
<是否小于A < Bfalse
> =是否不小于A >= Btrue
<=是否不大于A <= Bfalse

五、位运算符

运算符含义a = 60 (0011 1100),b = 13(0000 1101)c
,全1则1c = a & b12(0000 1100)
|或,有1则1c = a | b61(0011 1101)
^异或,不相同则1c = a ^ b49(0011 0001)
补,翻转c = 〜a-60(1100 0011)
<<左移c = a << 2240(1111 0000)
>>右移c = a >> 215(1111)
>>>右移补零,左空位补零c = a >>> 215(0000 1111)

六、条件(三元)运算符

语法:变量 = 表达式 ? 真时执行的语句: 假时执行的语句;

public class Test{
  public static void main(String [] args){
    int a = 2;
    String b;
    b = (a > 1) ? 'a大于1' : 'a不大于1';
    System.out.println(b);
  }
}

七、instanceOf 运算符

作用:判断对象实例是否是一个特定类型(类类型或接口类型)
语法:( Object reference variable ) instanceOf (class/interface type)
特点:

  1. 变量所指的对象,是(class/interface)的一个对象,则为真。
  2. 变量所指的对象,兼容于右侧类型,则为真。
String name = '张三';
boolean result = name instanceOf String; 
// 因name是Strine类型,所以result = true。

class Vehicle {}
public class Car extends Vehicle {
   public static void main(String [] args){
      Vehicle BMW = new Car();
      boolean result =  BMW instanceof Car;
      // BMW对象是Car的一种,所以result = true。
   }
}

八、运算符优先级

优先级类别运算符优先级
1后缀() 、 [] 、 . (点操作符)左到右
2一元+、 + - 、!、〜从右到左
3乘性*、 /、%左到右
4加性+、 -左到右
5移位>>、 >>>、 <<左到右
6关系>> =、 << =左到右
7相等==、 !=左到右
8按位与左到右
9按位异或^左到右
10按位或|左到右
11逻辑与&&左到右
12逻辑或| |左到右
13条件?、:从右到左
14赋值=、 + =、 - =、 * =、 / =、%=、 >> =、 << =、&=、 ^ = 、| =从右到左
15逗号左到右
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值