1.几个概念:
1:运算
对常量和变量进行操作的过程称为运算。
2:运算符
对常量和变量进行操作的符号称为运算符。
3:操作数
参与运算的常量或者变量称为操作数。
4:表达式
用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。
不同运算符连接的式子体现的是不同类型的表达式。
a
a + b
a > b
2.运算符:
运算符的分类:
算术运算符
赋值运算符
比较运算符
逻辑运算符
三目运算符
3.算术运算符:
+,-,*,/,
%,++,--
1./和%的区别?
/:除法,得到商
符号相同为正,不同为负
%:除法,得到余数
符号和第一个操作数相同
%的应用:
x%3 等于 0 说明x能被3整除
x%2 等1 说明x是奇数
等0 说明x是偶数
练习:
public class OperatorDemo {
public static void main(String[] args) {
/**
* 快捷键:
* tab向右缩进
* shift+tab向左边缩进
*
* 算术运算符:
+,-,*,/,
%,++,--
*/
int a = 10;
int b = 5;
int c = -3;
System.out.println(a+b);//15
System.out.println(a-b);//5
System.out.println(a*b);//50
System.out.println(a/b);//2
System.out.println(a%c);//1
/**
* 商的结果,如果除数和被除数符号相同,商为正,否则商为负
*/
System.out.println(10/5);//2
System.out.println(-10/5);//-2
System.out.println(10/-5);//-2
System.out.println(-10/-5);//2
System.out.println("-------------------");
/**
* 余数的结果符号和被除数相同
*/
System.out.println(10%3);//1
System.out.println(-10%3);//-1
System.out.println(10%-3);//1
System.out.println(-10%-3);//-1
}
}
2.++,–运算符
作用:++就是加1,--就是减1。
自增自减运算符
++,--在运算的时候,可以放在操作数的前面,也可以放在操作数的后面
A:单独使用
没有区别
B:参与其他操作使用
后面:先操作,再自增
前面:先自增,再操作
练习:
public class OperatorTest {
public static void main(String[] args) {
int a = 10;
int b = 10;
int c = 10;
a = b++;//a=10,b=11,c=10
c = --a;//a=9,b=11,c=9
b = ++a;//a=10,b=10,c=9
a = c--;//a=9,b=10,c=8
System.out.println(a);//9
System.out.println(b);//10
System.out.println(c);//8
}
}
4.赋值运算符:
基本:=
扩展:+=
扩展的赋值运算符隐含了强制类型转换:
int a = 10;
a += 20;
a = (a的数据类型)(a + 20)
练习:
public class OperatorDemo3 {
public static void main(String[] args) {
int a = 10;
a = a+5;//将之前定义的变量值和后面的数字相加,赋值给之前的变量
System.out.println(a);//15
int b = 10;
b+=5;//左边和右边进行运算之后,将结果赋值给左边,等价于a = a+5;
System.out.println(b);//15
int c = 10;
c/=5;
System.out.println(c);//2
short s = 10;
s = (short) (s+10);//强制转换为short类型,否则s+10为int类型,不能赋值给s
System.out.println(s);//20
System.out.println("-----------------");
short s1 = 10;
s1+=10;//+=这种赋值运算会隐含一个强制类型转换
System.out.println(s1);//20
}
}
5. 关系运算符:
==,!=,>,>=,<,<=
注意:
A:比较运算符的结果肯定是boolean。
B:你到底是使用"="还是使用"==",你自己要清楚。
练习:
public class Demo {
public static void main(String[] args) {
int a= 10;
int b = 20;
int c = 10;
System.out.println(a>c);//false
System.out.println(a<c);//false
System.out.println(a>=c);//true
System.out.println(a<=c);//true
System.out.println("--------------");
System.out.println(a!=c);//flase
System.out.println(a==c);//true
System.out.println(a=c);//将c的值赋值给a,并且打印a的值
}
}
6. 逻辑运算符:
&,|,!,^
&&,||
注意:
逻辑运算符用于连接关系表达式
结论:
&: 有false则false
|: 有true则true
!:改变结果,取反
^:相同false,不同true
记忆:情侣关系(男男,男女,女男,女女)
最常用的逻辑运算符;
!,&&,||
&&和&:
结果一样,但是&&具有短路效果,左边如果是false,右边不执行。
||和|:
结果一样,但是||具有短路效果,左边如果是true,右边不执行。
练习:
public class Demo2 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
System.out.println((a>c)&&(a>b));//false&&false=false
System.out.println((a<c)&&(a<b));//true&&true=true
System.out.println((a>c)&&(a<b));//false&&true=fasle
System.out.println((a<c)&&(a>b));//true&&false=false
System.out.println("-----------------------");
//|运算两边连接的布尔值,只要有一个为true就为true
System.out.println((a>c)||(a>b));//false||false=false
System.out.println((a<c)||(a<b));//true||true=true
System.out.println((a>c)||(a<b));//false||true=true
System.out.println((a<c)||(a>b));//true||false=true
System.out.println("----------------------");
int x = 3;
int y = 4;
//System.out.println(x++>3&&y++>4);
//false&& =fasle,&&会存在一个短路效果,前面链接的布尔值为fasle,
//整体就为fasle,所以后面的判断不执行
System.out.println(x);//4
System.out.println(y);//4
System.out.println(x++>3||y++>4);
//||运算链接的布尔值,如果前面的布尔值为true,连接的整体结果就为true后面的不执行
System.out.println(x);//4
System.out.println(y);//5
}
}
7. 三元运算符:
格式:?:
(比较表达式)?表达式1:表达式2;
执行流程:
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
练习:获取两个数和三个数之间的最大值
public class Demo {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
//使用三目运算符求出a,b之间的最大值
int max = (a>b)?a:b;
System.out.println(max);
//嵌套使用(获取三个数的最大值)
int temp = (a>b)?a:b;
max = (temp>c)?temp:c;
System.out.println(max);
}
}