一、JAVA的运算符:
1、按照操作数的数目可以分为三类:一元运算符、二元运算符、三元运算符。如下表:
分类 | 运算符 |
一元(单目)运算符 | +、-、++、--、!、~、 |
二元(双目)运算符 | %、+、-、*、/、<、<=、>、>=、!=、&&、&、||、|、^、>>、>>>、<<、=、+=、-=、*=、/=、&=、|=、%=、<<=、>>=、>>>= |
三目运算符 | ?: |
2、按运算功能进行划分:可以分为七类:如下表:
分类 | 运算符 |
算术运算符 | +、-、*、/、++、--、% |
关系运算符 | <、<=、>、>=、==、!= |
逻辑运算符 | &&、&、||、|、!、^ |
位运算符 | &、|、~、^、>>、>>>、<< |
赋值运算符 | =、+=、-=、*=、/=、&=、|=、%=、 <<=、>>=、>>>= |
条件运算符 | ?: |
其他运算符 | new、instanceof、() |
3、实践出真知
a、对于简单的不再举例,接下来直接举例“%”和“/”的区别。上代码:
int n=10;
System.out.println(n%3); //1
System.out.println(n/3); //3
由举例可以得出:两个都需要进行除法运算,其中“%”是除法以后取余运算,而“/”是取整运算。
之前总算会混,所以就建立了一个口诀:百分百是余数啊!(希望对你有帮助)
b、关于i++和++i
i++是先进行运算以后,i的值再增加,如果是输出语句,那么输出i++的值和上一次运算的值相同。
++i则是先对i进行加一后,再进行运算。话不多说:上代码:
int i=1;
int n=2;
System.out.println(i++); //1
System.out.println(++n); //3
其实他们的区别就在于谁先进行运算。
c、对于关系运算符,结果为boolean的值。直接举例:
char c='c';
System.out.println(c>100); //false
(char类型与int类型的比较的时候,自动转换为int类型的,c的ASCII码表的数据为99<100,所以结果为false)
d、逻辑运算符
首先看表;
&(逻辑与) | 查看两边的对错,都为true则为true |
&&(短路与) | 先查看左边的对错,如果一边为错,则不在查看另一边 |
|(逻辑或) | 查两边都中够一边为true则为true |
||(短路或) | 查看左边,若为true,则不再查看左边,直接为true |
!(非) | 取反运算 |
^(异或) | 同位取0,不同取1 |
首先分析关于&、|和&&、||的区别:在于是否进行二次运算,前者都需要进行判断,而后者可能不需要进行。上代码举例:
int a1=10;
int b1=1;
System.out.println(a1>20&(b1++)>3); //false
System.out.println(b1); //2
int a2=10;
int b2=1;
System.out.println(a2>20&&(b2++)>3); //false
System.out.println(b2); //1
通过举例发现,当第一个条件为false时,&仍然运行右边的运算,故b进行自加运算后值为2。
而&&,在第一个条件为false时,就不在进行第二条件的运算,直接输出false,故右边的b2的自加运算实则没有运行过,故值仍然为1。
e、异或运算:
按二进制,同则取0,不同则取1。满足交换律。
先看一个例题:
在不使用第三个变量的情况下,把两个数字的值进行互换。上代码;
int a=1314;
int b=520;
a=a^b;
b=a^b;
a=a^b;
System.out.println(a); //520
System.out.println(b); //1314
具体的解析,会在下一篇文章解释。(也可以自己探索。学习快乐!)
f、关于>>,>>>,<<
请期待下一篇文章。(待我深入研究,不可误人子弟)。
g、条件运算符:?:
格式:逻辑表达式1 ?表达式2 : 表达式3
如果表达式1成立,则执行表达式2,如果不成立,则执行表达式3。直接上举例代码。
char c='a';
System.out.println(c==99?"我爱中国!":"我爱我的祖国!"); //我爱我的祖国!
由于c=‘a’,,所以在和99进行比较的时候,自动进行类型转换后,a的ASCII的值为:97!=99,所以不成立,故执行“我爱我的祖国!”。
h、instanceof运算符:
判断一个对象是否为某个类的实例。上代码;
int[]a=new int[3];
boolean b=a instanceof Object;
System.out.println(b); //true
Object是所有类的超类(父类),所以结果为true,Java里的世界里,万物皆对象。
二、运算符的优先级:
自增自减运算符、算术运算符、位运算符、关系运算符、逻辑运算符、赋值运算符的优先级依次递减。具体使用的时候可以使用括号进行改变顺序,故此处只作了解:如下表
序号 | 运算符 |
1 | .、[]、() |
2 | ++、--、~、! |
3 | *、/、% |
4 | +、- |
5 | <<、>>、>>> |
6 | <、>、<=、>= |
7 | ==、!== |
8 | & |
9 | ^ |
10 | | |
11 | && |
12 | || |
13 | ?: |
14 | =、*=、/=、%=、+=、==、<<=、>>=、>>>=、&=、^=、|= |
本次的就到这里咯,如果大家发现错误,欢迎大家指正,共勉!!!
谢谢查看!