1.算术运算符
+ 求和运算符
- 相减
* 相乘
/ (商)相除
% 求余数(取模)
++ 自加一
-- 自减一
注意:运算符有优先级,不需要特殊记忆,一个表达式当中有多个运算符,不确定时优先级时而又需要优先运算某个运算符时可以加 (),就先运算小括号中的表达式及运算符
例如:
public class Operater{
public static void main (String[ ] args{
int i = 3;
int a = 10;
System.out.println( i + j ); // 13
System.out.println( i - j ); // 7
System.out.println( i * j ); // 30
System.out.println( i / j ); // 3 (浮点型数据只储存近似值)
System.out.println( i % j ); // 1
//++ 自加一举例,--自减一与自加一一样
int o = 10;
o++;
System.out.println(o); // 11
int k = 5;
++k;
System.out.println(k); // 6
//++或-- 运算符可以放在变量之前也可以放在变量之后,运算结果都是一样的
———————————————————————————————————————————
int m = 2;
int n = m++; //先做赋值运算
System.out.println(m); // 3
System,out.println(n); // 2
int s = 100;
int w = ++s; // s先自加一,然后再做赋值运算
System.out.println(s); // 101
System.out.println(w); // 101
}
}
-----自加一和自减一打印的例子
int a = 100;
System.out.println(a++); //100 在java源程序的打印方法中,相当于把需要打印的内容赋给一个变量再进行打印;
System.out.println(a); //101
System.out.println(++a); //102
System.out.println(a); //102 (进行了两次自加一)
2.关系运算符
> 大于
< 小于
<= 小于等于
>= 大于等于
== 等于
!= 不等于
注意:= 为赋值运算符,==为关系运算符
关系运算符的结果一定为布尔型,只有true或者false,而且关于运算符比较的是变量中保存的值(字面值)的大小,并不是变量类型所占空间的大小
3.逻辑运算符
& 逻辑与 (两边算子结果都为true,结果才为true)
| 逻辑或 (两边算子有一个为true,结果就为true)
! 逻辑非 (取反,表示否定,例如:!false为true,!true为false)
^ 逻辑异或 (两边的结果只要不一样就为true,例如:false^true 为真,true^true为假)
&& 短路与 (例如:a语句为true,b语句为false,b&&a时,b结果已经为false,整个语句结果已经确定为false,所以将不在执行a语句,此现象可以叫做短路)
|| 短路或 (和&&短路与同理,例如:a语句为true,b语句为false,a||b,a为真,所以语句结果已经确定为真,将不再执行b语句)
在实际开发中根据要求选择短路与或者逻辑与等等
4.赋值类运算符
--基本赋值运算符: = (先执行右边的语句再复制给左边)
--扩展赋值运算符:+=,-=,*=,/=,%=
具体应用举例:
byte a = 15;
a = a + 10; //此语句编译无法通过,因为10为int型字面值,在与byte型变量a做运算时会先转成int型变量再进行计算,所加结果为int类型数据,而再赋值给byte类型变量a时,需要进行强制类型转换,而我们并没有进行强制类型转换,所以编译会进行报错
a += 10; //此语句可以通过编译,因为 a += 10; 等于 a = (byte) (a + 10); 所以可以通过编译,所以扩展运算符会自动进行强制类型转换(同样会发生精度损失),将右边的数据类型转换为与运算符左边相同的数据类型,其他扩展运算符同理
5.字符串连接运算符
-- 字符串连接运算符为 +
-- + 在Java中有两个作用:求和 和 字符串的连接运算
-- 当 + 两边都是数字时,+ 代表求和运算
-- 当 + 两边只要有一个字符串时,就进行字符串连接运算,并且连接运算后的结果也是字符串
-- 在一个语句中可以出现多个 + ,在没有()的前提下,遵循从左向右依次进行运算
例如:
int a = 100;
int b = 200;
System.out.println( a + " + " + b + " = " + ( a + b ) ); //100 + 200= 300; 红色的 + 进行字符串的连接,绿色的 + 进行的是求和运算,橙色的 + 和 = 为固定的字符串。
String username = "zhangsan";
System.out.println("登陆成功,欢迎" + username + "回来"); // 登陆成功,欢迎zhangsan回来
6.三元运算符/三目运算符/三元运算符
-- 语法规则:布尔类型表达式(结果为布尔类型的语句) ? 语句1 : 语句2
-- 三元运算符语句执行规则:当布尔类型表达式结果为 true 时,选择 语句1 的执行结果作为三元运算符作用语句的执行结果;当布尔类型表达式结果为 false 时,选择 语句2 的执行结果作为三元运算符作用语句的执行结果
例如:
boolean sex = flase;
char c = sex ? "男" : '女'; //该语句无法通过编译,因为语句的执行结果可能为字符串类型的男,所以编译无法通过
System.out.println( sex ? "男" : '女'); //此语句可以编译通过并执行,因为和上面运算符自加一与自减一原理一样,打印语句在Java源代码中相当于一个赋值给一个万能源变量,这个变量相当于是万能变量,可以赋予任何类型的值,不管是字符串还是字符,还是整数型或者浮点型都可以,所以编此语句可以通过编译。
char a = sex ? '男' : '女';
System.out.println(a); // 女
在实际应用中我们要注意三元运算符所在语句执行的最后结果赋值时是否符合java语言中的规则。