目录
一、什么是运算符?
运算符也可叫做操作符,是对变量和常量进行运算的符号.
二、运算符的分类
1.算术运算符
+ - * / % ++ --
-
" + " :加 (+的两个作用:)
a:进行加法运算 (当+左右两边的都为数字类型时,进行加法运算)
b:进行字符串拼接. (加号两边任意一边为字符串,则发挥拼接作用!并且拼接 后的结果为字符串类型 ) 例:
System.out.println( 521 + "中国!" );
//加号左边为521,默认为int类型,右边的是字符串类型"中国".于是起拼接作用!
//最后输出的也是字符串"521中国!"
当一个表达式中有多个"+"时,遵循从左往右的顺序一次执行.除非加了小括号,小括号的优先级高!
-
" - " :减
-
" * " :乘 (+ . - . *都是正常的四则运算里的运用就对啦!)
-
" / " :取商
class Demo{
public static void main(String[] args){
//注意:当为整数类型时,结果也是整数类型!结果取整,不要余数!
int a=8%3;
System.out.println(a); //输出为2
}
}
其它时候均为取商
- " % " :取余 (就是取最后的余数!)
class Demo{ public static void main(String[] args){ int a=8%5; System.out.println(a); //输出为3 } }
- " ++ " :自加1
- " -- " :自减1 (++和--具体的介绍,在这里. ☞☞☞☞☞☞ 详细介绍 )
2.赋值运算符
= += -= /= *= %=
A:基本赋值运算符
- " = " :将右边的值赋值给左边的变量
例:Int a=10; 将值10赋值给左边的int类型的变量a.
(注意: "="右边的优先级比左边的高! 先执行右边的表达式或值,再将结果或值 放到左边的"盒子"里!)
B:扩展赋值运算符
( += -= *= /= %=) 就以+=为例介绍一下吧!其他的都时一个原理!
如下例中的a+=5 ; 也就是a=a+5;
class Demo{
public static void main(String[] args){
int a=10;
a+=5; //相当于a=a+5;
System.out.println(a); //输出为15
}
}
a+=5; 和 a=a+5; 真的完全一样吗???
那么问题来啦! a+=5; 和 a=a+5; 真的完全一样吗???
答案是不一样的!只能说他俩比较相似,但再本质上是不一样的!来看个例子吧!
如上面两个图中,左边是a+=5;右边是a=a+5;而左边的图运行结果是15!右边的却编译报错!不兼容的类型: 从int转换到byte可能会有损失!这就问题来了!!!!
右图中:a=a+5;a与5参与运算后,其结果就是int类型!但a原本的接收类型就是byte类型!
int类型------>byte类型,需要强制转换!所以编译报错!
由此可以得出一个结论:使用扩展运算符,永远都不会改变运算的结果类型!
即a+=5等于a=(byte)(a+5);
3.比较运算符
!= < > <= >= ==
比较运算符也可叫做关系运算符!(其所有的运算结果都是布尔类型,只有两个结果:true 或 false)并且需要注意:运算符中有两个字符的话,两个字符之间不能有空格!否则会编译报错的哈!
- " == " :比较两个数是否相等!
class Demo{
public static void main(String[] args){
int a=10;
int b=10;
System.out.println(a == b); //输出为ture
}
}
4.逻辑运算符
& | && || !
- " & " :逻辑与(可以理解为并且 . 例:100>99并且100>98 -----> 100>99 & 100>98)
两边都为true,结果才为true.两边任意一边为false,结果就为false.
- " | " :逻辑或
两边任意一边为true,结果就为true.
- " && " :短路与
- " || " :短路或
- " ! " :非 (相当于取反.如果是true,则为false.如果是false,则为true.)
逻辑运算符的特点: 逻辑运算符的两边要求都是布尔类型,并且最终结果也是布尔类型!
&与&&,|与||有什么区别呢?
首先&与&&完全相同,只不过"&&"会出现短路现象!(什么是短路现象呢?请看下面示例!)
" & "的示例:
class Demo{
public static void main(String[] args){
int i=10;
int j=5;
if(i++>20 & i>j++){
System.out.println("");
}
System.out.println(i); //输出i为11
System.out.println(j); //输出j为6 (左边i++>20为false,并且后面的j++执行了!)
}
}
" && "的示例:
class Demo{
public static void main(String[] args){
int i=10;
int j=5;
if(i++>20 && i>j++){
System.out.println("");
}
System.out.println(i); //11
System.out.println(j); //输出j为5 (左边i++>20为false,后面的j++没有执行!)
}
}
从"&&"的示例就可以发,左边的表达是为false,右边的表达式就不再执行!这就是短路现象!
由此得出结论:如果左边的表达式为false,"&"右边的表达式会继续执行,而"&&"的右边的表达式就不再执行!
同理:如果左边的表达式为true,"|"右边的表达式会继续执行,而"||"的右边的表达式将不再执行!
什么时候用&?什么时候又用&&呢?
从效率方面来说"&&"比"&"的效率要高一些!因为"&"不管第一个表达式怎么样,右边的表达式都会执行!所以大部分时间都用"&&",只有咱们想让两边都执行时,才用"&"!
5.位运算符
& | ^ ~ << >> >>>
位运算符的详细介绍!!! --------> 点击这里!!
6.三元运算符
格式: 表达式 ? 表达式1 : 表达式2
三元运算符也可叫做三目运算符哟!
如果表达式的结果为真,则执行表达式1,如果为假,就执行表达式2!
例:求两个数之间的最大值!
class Demo{
public static void main(String[] args){
int a=10;
int b=5;
int max= a>b?a:b;
System.out.println(max);
}
}
三.运算符的优先级
java中的运算符是有先后运算顺序的,这个就是运算符的优先级.以下就是运算符的优先级(从高到低)
优先级 | 描述 | 运算符 |
1 | 括号 | ()、[] |
2 | 正负号 | +、- |
3 | 自增自减,非 | ++、--、! |
4 | 乘除,取余 | *、/、% |
5 | 加减 | +、- |
6 | 移位运算 | <<、>>、>>> |
7 | 大小关系 | >、>=、<、<= |
8 | 相等关系 | ==、!= |
9 | 按位与 | & |
10 | 按位异或 | ^ |
11 | 按位或 | | |
12 | 逻辑与 | && |
13 | 逻辑或 | || |
14 | 条件运算 | ?: |
15 | 赋值运算 | =、+=、-=、*=、/=、%= |
16 | 位赋值运算 | &=、|=、<<=、>>=、>>>= |
(小编也在努力学习更多哟!以后会多多分享哒!)
希望对友友们有所帮助!!!!