算术运算符
算数运算符 | 作用 |
---|---|
+ | 两个操作数相加 |
- | 两个操作数相减 |
* | 两个操作数相乘 |
/ | 两个操作数相除 |
% | 取模运算,获得余数 |
实例:
public class Demo1Operator {
public static void main(String[] args){
System.out.println(10+20);
System.out.println(10-20);
System.out.println(10*20);
System.out.println("------------------");
/*整数相除,结果只能得到整数,如果想得到带有小数的结果,必须加入小数(浮点类型)运算*/
System.out.println(10/2);
System.out.println(10/3);
System.out.println(10/3.0);
System.out.println(10.0/3);
System.out.println("------------------");
/*取模,即取余数*/
System.out.println(5%2);
}
}
打印结果:
字符的‘+’操作:
ASCII:字节到字符的对应关系
‘a’ — 97
‘A’ — 65
‘0’ — 48
实例:
public class Demo2Operator {
public static void main(String[] args){
int a=1;
char b='a';
System.out.println(a+b);
}
}
打印结果:
98
分析原因:
a为int型,b为char型,当(byte、short、char、int)在一起运算的时候,都会提升为int之后,再运算。
字符串的‘+’操作
- 字符串可以使用+号,跟(任意数据类型)拼接
- 当+操作中出现字符串时,这个+是(字符串连接符)
- 连续+操作时从左到右依次执行
实例:
public class Demo3Operator {
public static void main(String[] args ){
System.out.println("zhengjingsuo"+123);
System.out.println("zhengjingshuo"+true);
System.out.println(1+99+"黑马程序员");//从左到右执行
System.out.println("5+5="+5+5);
System.out.println("5+5="+(5+5));//小括号先运算
}
}
打印结果:
zhengjingsuo123
zhengjingshuotrue
5+5=55
100黑马程序员
5+5=10
实例:
数值拆分:
键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台,
import java.util.Scanner;
public class Demo5Operator {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个三位数");
int num =sc.nextInt();
int ge = num%10;
int shi = num/10%10;
int bai = num/100;
System.out.println("整数"+num+"的个位为"+ge);
System.out.println("整数"+num+"的个位为"+shi);
System.out.println("整数"+num+"的个位为"+bai);
}
}
结果:
123
整数123的个位为3
整数123的个位为2
整数123的个位为1
自增自减运算符
++ | 自增 | 变量值加1 |
---|---|---|
- - | 自减 | 变量值减1 |
实例:
public class Demo6Operator {
public static void main(String[] args){
int a=10;
int b=++a;//先a=a+1,再b=a;
System.out.println(a);
System.out.println(b);
b=a--;//先b=a,再a=a-1;
System.out.println(a);
System.out.println(b);
}
}
打印结果:
11
11
10
11
分析:
++和- -
-
放在变量后面,先将该变量原本的值取出来参与操作,随后进行自增(++)或自减(-
-)。 -
放在变量前面,先进行自增(++)或自减(- -),然后拿变量参与操作。
-
只能操作变量,不能操作常量。
赋值运算符
实例:
public class Demo7Operator {
public static void main(String[] args){
int a=10;
System.out.println(a);
a+=10;//a=a+10;
System.out.println(a);
a-=10;//a=a-10;
System.out.println(a);
a*=10;//a=a*10;
System.out.println(a);
a/=10;
System.out.println(a);
a%=10;
System.out.println(a);
}
}
打印结果:
20
10
100
10
0
注意点:
报错:
java: 不兼容的类型: 从int转换到short可能会有损失
正确写法:
public class Demo7Operator {
public static void main(String[] args){
short a=1;
a = (short)(a+1);
System.out.println(a);
}
}
结果:
2
分析原因:
参考day1类型转换
public class Demo7Operator {
public static void main(String[] args){
short a=1;
a +=1;
System.out.println(a);
}
}
结果:
2
分析原因:
a+=1;相当于a=(short)(a+1);
扩展赋值运算符底层会自带强转.
关系运算符
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
其返回值为布尔类型
实例:
public class Demo7Operator {
public static void main(String[] args){
System.out.println(10>20);
System.out.println(10<20);
System.out.println(10!=20);
System.out.println(10==20);
}
}
打印结果:
false
true
true
false
逻辑运算符
&(逻辑与) 一假则假,全真才真
|(逻辑或)一真则真,全假才假
!(逻辑非)取反
^(逻辑异或)相同为假,不同为真
实例:
public class Demo7Operator {
public static void main(String[] args) {
int x=10;
System.out.println(x>5&x<15);
}
}
打印结果:
true
短路逻辑运算符
&&短路与 当左边为false时,右边就不执行了;如果左边为true,右边要执行
|| 短路或 当左边为true时,右边就不执行了;如果左边为false,右边要执行
实例&&:
public class Demo7Operator {
public static void main(String[] args) {
int x=3;
int y=4;
System.out.println(++x>4&&y--<5);
System.out.println(x);//4
System.out.println(y);//4
}
}
打印结果:
4
4
实例&:
public class Demo7Operator {
public static void main(String[] args) {
int x = 3;
int y = 4;
System.out.println(++x > 4 & y-- < 5);
System.out.println(x);//4
System.out.println(y);//3
}
}
打印结果:
4
3
三元运算符
格式:关系表达式?表达式1:表达式2
计算关系表达式的值,如果值为true,取表达式1的值,如果为false,取表达式2的值
实例:取两个数的最大值
public class Demo7Operator {
public static void main(String[] args) {
int x = 3;
int y = 4;
System.out.println(x>y?x:y);
}
}
打印结果:
4
实例:取三个数的最大值
public class Demo7Operator {
public static void main(String[] args) {
int x = 3;
int y = 4;
int z = 5;
System.out.println((x>y?x:y)>z?(x>y?x:y):z);
}
}
打印结果:
5