运算符
2020-07-19 本文已影响0人
小疏林er
算术运算符:
- +:加号有两种使用方式
(1) 两边是数值类型,则进行加和;
(2) 有一边是字符串类型则进行字符串拼接,整体变成字符串类型。- /:除法,左操作数除以右操作数,结果取整数,小数舍弃
- %:取余,左操作数除以右操作数的余数,结果取余数。
5/3=1;-5%3=-2;-5%-3=-2;5%-3=2;5%3=2;- ++:自增1,--类似
a++:先取值运算再自增;
++a:先自增再取值运算;
(考)int a=1; a=a++; System.out.println(a); //1 int j=0; for(int i=0;i<100;i++){ j=j++; } System.out.println(j); //0 ,取 j 的值准备为 j 赋值,但由于++运算符优先级高于赋值运算符, //于是先自增1后,再将第一步取出来的0赋给j,所以 j 一直等于0.
- 其他:-、*。
关系运算符(得到布尔值)
- ==:检查如果两个操作数的值是否相等,如果相等则条件为真。注意和赋值运算符"="区分。
- !=:检查如果两个操作数的值是否相等,如果值不相等则条件为真。
- 其他:<、>、<=、>=。
逻辑运算符
- &&:(一假则假)
逻辑与:当且仅当两个操作数都为真,条件才为真。
短路于:A&&B,当AB均为真时结果才为真,当A为假后结果必定为假,这是就不会再判断B了。- ||:(一真则真)
逻辑或:如果任何两个操作数任何一个为真,条件为真。
短位或:A||B,当AB有一为真时结果才为真,当A为真后结果必定为真,这是就不会再判断B了。- !:用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。
(考)int a=1,b=1; System.out.println(b); System.out.println(a>1||--b>1); //0,false //一真则真 int a=1,b=1; System.out.println(b); System.out.println(a==1||--b>1); //1,true //一假则假 int a=1,b=1; System.out.println(b); System.out.println(a>1&&--b>1); //1,false int a = 0x9af700; //1001 1010 1111 0111 0000 0000 00 a <<= 2; //0x26bdc00
位运算符
- &:按位与,按照对应位相与,只有1&1才得1。
- |:按位或,按照对应位相或,只有0|0才得0。
- ~:按位取反,翻转操作数的每一位,即0变成1,1变成0。
- Λ:异或运算,不同则为1(0^1==1),一个数连续异或另一个数两次,等于啥也没发生。
条件(三元)运算符
- 基本使用
public class HelloWorld { public static void main(String []args) { int s =99; System.out.println(s<60?"不及格":(s<80?"及格":(s<90?"良":"优秀"))); } }
- 嵌套使用
public void test5(int a) { char grade =(a>=90?'A':(a>=60?'B':'C')); System.out.println(grade); }
运算符优先级
从上到下优先级依次降低
类别 | 操作符 | 关联性 |
---|---|---|
后缀 | () [] . (点操作符) | 左到右 |
一元 | expr++ expr-- | 从左到右 |
一元 | ++expr --expr + - ~ ! | 从右到左 |
乘性 | * /% | 左到右 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | > >= < <= | 左到右 |
相等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | || | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = += -= *= /= %= =>>= <<= &= ^= |= | 从右到左 |
逗号 | , | 左到右 |