运算符
- 算数运算符:+,-,*,/,%,++,--
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=,instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>(无符号右移)
- 条件运算符:! :
- 扩展赋值运算符:+=,-=,*=,/=
byte与short以及char计算时会转变为int类型
a++:先输出a,再自增;++a:先自增,在输出a
位运算:
A = 0011 1100;
B = 0000 1101;
//------------------
A & B = 0000 1100;//都为1时取1,否则取0
A | B = 0011 1101;//都为0时取0,否则取1
A ^ B = 0011 0001;//相等时取0,不相等
~B = 1111 0010;//取反
//------------------
<< == *2
>> == /2
//例:2^4 == 2<<3 == 2*2*2*2 == 2*8
//====================================
10>>>2;
//10的原码:0000 0000 0000 1010
//右移2位: 00 0000 0000 0010
//用0补齐: 0000 0000 0000 0010 == 2
//=====================================
//>>和>>>在正数时无区别,在负数时才有区别
//其中>>部位为1;>>>补位为0
//负数的位运算
// -2>>2 == -1
//-2的原码:1000 0010
//-2的反码:1111 1101
//-2的补码:1111 1110
//右移2位: 1111 1111
//取反码: 1000 0000
//反码加1: 1000 0001 == -1
字符串连接符:+
int a = 10;
int b = 20;
System.out.println(a+b+"");
System.out.println(""+a+b);
System.out.println(a+b+""+a+b);
//-------------------------------------------------
//输出结果为:30
// 1020
// 301020
//在字符串之后的运算会转化为字符运算。
条件运算符(三目运算符):
//x?y:z
//如果x为true则返回y否则返回z
int score = 80;
String type = score>60 ? "及格":"不及格";
System.out.println(type);
//---------------------------
//输出结果为:及格
运算符优先级
优先级 | 运算符 |
---|---|
1 | ()、[]、{} |
2 | !、+(正)、-(负)、~、++、-- |
3 | *、/、% |
4 | +(加)、-(减) |
5 | >>、>>、>>> |
6 | <、<=、>、>=、instanceof |
7 | ==、!= |
8 | & |
9 | ^ |
10 | | |
11 | && |
12 | || |
13 | ?: |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= |