优先级和结合性
运算符的运算优先级共分为15级,1级最高。在表达式中,优先级较高的先于优先级较低的进行运算。 而在一个运算量两侧的运算符优先级相同时, 则按运算符的结合性所规定的结合方向处理。左结合性:如有表达式x-y+z则y应先与“-”号结合, 执行x-y运算,然后再执行+z的运算;右结合性:如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。【优先级见最下方 图1-1】
运算符分类
1.算数运算符
1).概述:对数据进行算数运算的符号
2).分类:
1.常见的算数运算符:+、-、*、/、%
常见的运算符 | 用法 |
---|---|
+ | 数学加法;正数;拼接 |
- | 数学减法;负数 |
* | 数学乘法 |
/ | 数学除法 |
% | 取余 |
*注意:
+:字符串与任意数据类型做+(拼接)时,会先把其他类型转变为字符串,再拼接为更长的字符串
-:字符之间也可减法
/:整数与整数相除还是整数(直接取整)
%:只能用于整数
2.还有的算数运算符:++ 、 - -
注意分为前加加(减减)和后加加(减减),例如:++n:先做自加运算;n++:做完其他操作,再做自加运算
2.赋值运算符:
基本赋值运算符:=
扩展赋值运算符:复合算数赋值(+=、-=、*=、/=、%=)、复合位运算赋值(&=、|=、^=、>>=、<<=)、>>>=
- 用法:右边数据与左边数据运算后,再赋值给左边,例如:
int i=10;
i +=1;
Ssytem.out.println(i);//11
3.比较运算符:
判断是否相等:==、!=
比较大小:>、<、>=、<=
注意:整数、小数、字符类型可以比较大小
比较结果为:true、false
4.逻辑运算符:
含义:用于处理逻辑值,判断是非的一些运算符
分类:
- 基本逻辑运算符:&、|、^、!
- 短路逻辑运算符:&&、||
逻辑运算符 | 用法 |
---|---|
&(逻辑与) | 全真为真,其余为假 |
\(逻辑或) | 见真为真,其余为假 |
^(逻辑异或) | 不同为真,相同为假 |
!(逻辑非) | 取反 |
&&(短路与) | 全真为真,其余为假 【&&前面为false时,不在继续运算,直接为false】 |
\\(逻辑或) | 见真为真,其余为假【\\前面为true时,不在继续运算,直接为true】 |
&:
判断字符是否为大写字母
char x='A';
System.out.println(x>='A' & x<='Z');
//true
|:
判断字符是否为字母
char x='A';
System.out.println((x>='A' & x<='Z')|(x>='a' & x<='z'));
//true
&&:
int i=100;
boolean b1=i<1 && i++>200;
System.out.println(i);
//结果为100,说明前面为false时,直接结束运算了
||:
int j=100;
boolean b2=j++<1000 || j-->200;
System.out.println(j);
//结果为101,说明前面为true时,直接结束运算了
5.条件运算符(三元运算符、三目运算符)
格式:表达式1 ? 表达式2 :表达式3
说明:
- 表达式1运算结果必须为boolean类型
- 表达式2和3必须有运算结果,类型不限
- 表达式1为true,结果为表达式2;表达式1为false,结果为表达式3
//判断奇偶性
int i=1;
System.out.println(i%2==0?"偶数":"奇数");
6.位运算符
含义:参与运算的量,按二进制位进行运算
分类:位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)、无符号右移(>>>)
符号 | 用法(0为false,1为true;都操作补码) |
---|---|
& | 全1为1,其余为0 |
/ | 全0为0,其余为1 |
^ | 相同为0,不同为1 |
~ | 1变0,0变1 |
<< | 左移一位,翻倍 |
>> | 右移一位,减半 |
>>> | 右移一位,减半(针对正数) |
eg:
1)5&20=4
将5和20都变成补码,再根据规则得到结果的补码,再将结果补码变成原码,得到最终结果4
2)3^5^5=3
**异或同一个整数两次得到本身**
3)20<<1 = 40
20>>1 = 20
-5>>1 = -3
20>>>1= 10
- 交换数据的三种方式
int a = 10;
int b = 20;
//第一种:
int c ;
c=a;
a=b;
b=c;
//第二种:
a = a+b;
b = a-b;
a = a-b;
//第三种:
a = a^b;
b = a^b;
a = a^b;
7.逗号运算符
含义:用于把若干表达式组合成一个表达式
符号:,
8.指针运算符
含义:用于取内容和取地址二种运算
符号 | 用途 |
---|---|
* | 取内容 |
& | 取地址 |
9.求字节数运算符 | |
含义:用于计算数据类型所占的字节数 | |
符号:sizeof | |
10.特殊运算符 | |
有括号(),下标[],成员(→,.)等几种 |
(图1-1)