转载请保留原文链接: http://dashidan.com/article/java/basic/7.html
① Java算数运算符
Java算数运算符: 加, 减, 乘, 除(取模, 取余), 算数运算符从右往左赋值.即将等号右边的值,赋给等号左边的变量.
- 加
+
int a = 1;
int b = 2;
int c = a + b;
System.out.println(c);
- 减
-
int a = 1;
int b = 2;
int c = a - b;
System.out.println(c);
- 乘
*
int a = 1;
int b = 2;
int c = a * b;
System.out.println(c);
- 除-取模
/
对整数取模运算,相当于取结果的整数,去掉余数.
int a = 1;
int b = 2;
int c = a / b;
System.out.println(c);
- 除-取余
%
对整数取余运算,相当于取得不够整除部分的数值.
int a = 1;
int b = 2;
int c = a % b;
System.out.println(c);
② Java自动类型转换
当两个类型不同的数据类型运算时,结果自动转化为取值范围大的数据.
byte->short->int->long->float->double
具体规则:
- 布尔型和其它基本数据类型之间不能相互转换.
- byte型可以转换为short、int、、long、float和double.
- short可转换为int、long、float和double.
- char可转换为int、long、float和double.
- int可转换为long、float和double.
- long可转换为float和double.
- float可转换为double.
示例代码:
package com.dashidan.lesson6;
/**
* 大屎蛋教程网-dashidan.com
* <p>
* Java教程基础篇: 6. Java运算符
* Java算数运算符
*/
public class Demo1 {
public static void main(String[] args) {
/** 加`+`*/
int a = 1;
int b = 2;
int c = a + b;
System.out.println(c);
/** 减`-`*/
a = 1;
b = 2;
c = a - b;
System.out.println(c);
/** 乘`*` */
a = 1;
b = 2;
c = a * b;
System.out.println(c);
/** 除-取模`/`对整数取模运算,相当于取结果的整数,去掉余数.*/
a = 1;
b = 2;
c = a / b;
System.out.println(c);
/** 除-取余`%`对整数取余运算,相当于取结果的余数.*/
a = 1;
b = 2;
c = a % b;
System.out.println(c);
}
}
输出: 3 -1 2 0 1
③ Java复合运算符
复合运算符是一种简写. 以+=
为例,表示加一个值再赋值给本身.常用的复合运算符:
+=
加法赋值
a += 1;
// 等同于以下
a = a + 1;
-=
减法赋值
b -= 1;
// 等同于以下
b = b - 1;
*=
乘法赋值
c *= 1;
// 等同于以下
c = c * 1;
/=
除法赋值
d /= 1;
// 等同于以下
d = d / 1;
%=
模运算赋值
e %= 1;
// 等同于以下
e = e % 1;
示例代码:
package com.dashidan.lesson6;
/**
* 大屎蛋教程网-dashidan.com
* <p>
* Java教程基础篇: 6. Java运算符
* Java复合运算符
*/
public class Demo2 {
public static void main(String[] args) {
int a = 0;
/** += 运算*/
a += 1;
System.out.println(a);
/** -= 运算*/
int b = 0;
b -= 1;
System.out.println(b);
/** *= 运算*/
int c = 2;
c *= 3;
System.out.println(c);
/** /= 运算*/
int d = 5;
d /= 3;
System.out.println(d);
/** %= 运算*/
int e = 5;
e %= 3;
System.out.println(e);
}
}
输出:
1
-1
6
1
2
④ Java自增,自减运算符
自增运算符++
, 自建运算符--
.原理一样,以自增运算符为例介绍.
分前缀式(如++i
)和后缀式(如i++
). 以自增运算符(++)为例: 前缀式是先加1再使用,后缀式是先使用再加1.
单独执行自增自减时前缀式,后缀式单独执行结果一样.道理同自增运算符,只是加1,变成了减1.
int i = 0;
i++;
System.out.println(i);
int j = 0;
++j;
System.out.println(j);
放在运算过程中执行. 前缀,后缀放在运算过程中结果不同.
/** 后缀式*/
/** 初始化a和i*/
a = 0;
i = 0;
a = i++;
/** i使用前是0,此时i为0不加1,a为0. */
System.out.println(a);
/** 使用后i加1,i为1*/
System.out.println(i);
示例代码:
package com.dashidan.lesson6;
/**
* 大屎蛋教程网-dashidan.com
* <p>
* Java教程基础篇: 6. Java运算符
* Java自增,自减运算符
*/
public class Demo3 {
public static void main(String[] args) {
/** 前缀,后缀单独执行结果一样*/
int i = 0;
i++;
System.out.println(i);
int j = 0;
++j;
System.out.println(j);
/** 前缀,后缀放在运算过程中结果不同*/
/** 前缀式*/
int a = 0;
i = 0;
a = ++i;
/** i使用前是0,此时i为0不加1,a为0. */
System.out.println(a);
/** 使用后i加1,i为1*/
System.out.println(i);
/** 后缀式*/
/** 初始化a和i*/
a = 0;
i = 0;
a = i++;
/** i使用前是0,此时i为0不加1,a为0. */
System.out.println(a);
/** 使用后i加1,i为1*/
System.out.println(i);
}
}
输出:
1
1
1
1
0
1
倒数第二个输出是0
,这个就是后缀式的使用后计算导致的结果.
⑤ Java关系运算符
关系运算符用于比较两个数值之间的大小. 其运算结果为一个布尔值(boolean
),只有true
(真)和false
(假)两个取值.
基本数据类型的关系运算符:
* >
大于
* <
小于
* >=
大于或等于
* <=
小于或等于
* ==
等于
* !=
不等于
示例代码:
package com.dashidan.lesson6;
/**
* 大屎蛋教程网-dashidan.com
* <p>
* Java教程基础篇: 6. Java运算符
* Java关系运算符
*/
public class Demo4 {
public static void main(String[] args) {
int a = 0;
int b = 0;
boolean c = a > b;
System.out.println(c);
boolean d = a < b;
System.out.println(d);
boolean e = a == b;
System.out.println(e);
boolean f = a == b;
System.out.println(f);
}
}
输出:
false
false
true
true
⑥ Java逻辑运算符
逻辑运算符主要用于进行条件真(true
)假(false
)运算.包括&&
(且), ||
(或),!
(异或) , ^
(非), instanceof
(判断对象实例类型).
&&
且
两目运算符,需要2个值参与运算.
符号两边的条件都为true
,运算结果为true
.如果任一条件为false
,结果为false
.
boolean a = true;
boolean b = false;
boolean c = a && b;
// a和b里不同时为true,故`&&`运算的结果为false
System.out.println(c);
||
或
两目运算符,需要2个值参与运算.
符号两边的条如果任一条件为true
,结果为true
.如果都为false
,结果为false.
boolean a = true;
boolean b = false;
boolean c = a || b;
// a和b里面,a为true,故`||`运算的结果为true
System.out.println(c);
!
非
单目运算符
,需要1个值参与运算.得到与原布尔值相反的值.
原值为true
,经过!
运算,得false
.
原值为false
,经过!
运算,得true
.
boolean a = true;
boolean c = !a;
// c为 a的相反值,即为true
System.out.println(c);
^
异或
两目运算符,需要2个值参与运算.
符号两边的布尔结果不同时,结果为true.如果相同(同时为true
,或者同时为false
),结果为false
.
boolean a = true;
boolean b = false;
boolean c = false;
boolean d = a ^ b;
boolean e = b ^ c;
// a和b里不同,故`^`运算的结果为false,d为false
System.out.println(d);
// c和d里同时为false,故`^`运算的结果为true,e为true
System.out.println(e);
示例代码:
package com.dashidan.lesson6;
/**
* 大屎蛋教程网-dashidan.com
* <p>
* Java教程基础篇: 6. Java运算符
* Java逻辑运算符
*/
public class Demo5 {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
boolean c = a && b;
/** a和b里不同时为true,故`&&`运算的结果为false*/
System.out.println(c);
a = true;
b = false;
c = a || b;
/** a和b里面,a为true,故`||`运算的结果为true*/
System.out.println(c);
a = true;
c = !a;
/** c为 a的相反值,即为true*/
System.out.println(c);
a = true;
b = false;
c = false;
boolean d = a ^ b;
boolean e = b ^ c;
/** a和b里不同,故`^`运算的结果为false,d为false*/
System.out.println(d);
/** c和d里同时为false,故`^`运算的结果为true,e为true*/
System.out.println(e);
}
}
输出:
false
true
false
true
false
⑦ Java条件运算符
由两个符号组成?
和:
,要求有3个操作对象,所以也叫三目运算符.
a<b?a:b;
如果?
前边的表达式(a
package com.dashidan.lesson6;
/**
* 大屎蛋教程网-dashidan.com
* <p>
* Java教程基础篇: 6. Java运算符
* Java三目运算符
*/
public class Demo6 {
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = a > b ? a : b;
/** a > b 为false,所以取":"后边的值b赋值给c, 故c为2.*/
System.out.println(c);
}
}
输出:
2
⑧ Java运算符优先级
基本的原则是有括号先算括号里的,然后先乘除后加减. 乘除都有时,从左往右依次计算. 加减从左往右依次计算. 示例代码:
int a = 1;
int b = 2;
int c = 3;
int d = a + b * c;
/** 乘号的优先级比加号高, 先算b*c再加a,故d为7*/
System.out.println(d);
加减乘除混合, 示例代码:
package com.dashidan.lesson6;
/**
* 大屎蛋教程网-dashidan.com
* <p>
* Java教程基础篇: 6. Java运算符
* Java运算符优先级
*/
public class Demo7 {
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = 3;
int d = a + b * c;
/** 乘号的优先级比加号高, 先算b*c再加a,故d为7*/
System.out.println(d);
/** 加减乘除混合*/
a = 1;
b = 2;
c = 3;
d = 4;
d = a + b * c / d - 5;
/** 乘号和除号的优先级比加号高, 先算乘除, 从左往右, b*c得6,d(值为4),`6/4`得`1.5`.取模运算省去小数,`b*c/d`得1*/
/** 加减法从左往右计算,a+1-5得-3,赋值给d.故d为-3.*/
System.out.println(d);
}
}
输出:
7
-3
优先级 | 符号 | 名称 | 结合性 |
1 | . | 点 | 从左到右 |
( ) | 圆括号 | 从左到右 | |
[ ] | 方括号 | 从左到右 | |
2 | + | 正号 | 从右到左 |
- | 负号 | 从右到左 | |
++ | 自增 | 从右到左 | |
- - | 自减 | 从右到左 | |
~ | 按位非/取补运算 | 从右到左 | |
! | 逻辑非 | 从右到左 | |
3 | * | 乘 | 从左到右 |
/ | 除 | 从左到右 | |
% | 取余 | 从左到右 | |
4 | + | 加 | 从左到右 |
- | 减 | 从左到右 | |
5 | << | 左移位运算符 | 从左到右 |
>> | 带符号右移位运算符 | 从左到右 | |
>>> | 无符号右移 | 从左到右 | |
6 | < | 小于 | 从左到右 |
<= | 小于或等于 | 从左到右 | |
> | 大于 | 从左到右 | |
>= | 大于或等于 | 从左到右 | |
instanceof | 对象是否属于指定的类 | 从左到右 | |
7 | == | 等于 | 从左到右 |
!= | 不等于 | 从左到右 | |
8 | & | 按位与 | 从左到右 |
9 | | | 按位或 | 从左到右 |
10 | ^ | 按位异或 | 从左到右 |
11 | && | 短路与 | 从左到右 |
12 | || | 短路或 | 从左到右 |
13 | ?: | 条件运算符 | 从右到左 |
14 | = | 赋值运算符 | 从右到左 |
+= | 混合赋值运算符 | ||
-= | |||
*= | |||
/= | |||
%= | |||
&= | |||
|= | |||
^= | |||
<<= | |||
>>= | |||
>>>= |