运算符分为算数运算符、赋值运算符、比较运算符又叫关系运算符、逻辑运算符、位运算符还有三元(三目)运算符几大类。接下来我们仔细来说下这几大运算符的作用。
1,算数运算符:
算数运算符主要就是用来计算,他的表现形式有以下几种:
基本的有:+ ,- , * , / ,%(取模,取余数);
扩展的有: ++ , - - ;
我们在平时用的话扩展的用的次数还是相对来说比较多的,我们也着重说下扩展的算术运算符 自增和自减。
平时单独用的情况下,不管自增还是自减在数据的前面还是后面他代表的含义就是对数据本身进行自增或者自减的。
如果是参与运算的情况下要分情况来定义:
情况一:自增或者自减在数据之后,要先进行运算在进行自增或者自减。
情况二 :自增或者自减在数据之前,要要进行自增或者自减在进行运算的。
还有就是除号( / ):两个数相处,默认是int型,所以是默认取整的。
取模( % ):两个数进行取模,是在求余数,只需要输出余数就可以的。
2,赋值运算符:
基本的赋值运算符:在代码中就是将等号右边的数据赋值给等号左边的某个类型的变量。
例:
class TestDemo{
public static void main(String[] args){
int a = 3;//将3的值赋给a。
System.out.println(a);
}
}
一定要注意的是千万不能将"=",写成"=="因为“==”表示的是判断而不是赋值。
扩展的赋值运算符有:" +=","-=","*=","/=","%="。
+=:将=右边的值和左边的变量想加,然后再将结果赋值给左边的变量a。
举例:
int a = 10;
a += 20; //a=a+20;先将a和20相加在赋值给a
a = 30;
//和 a = a + 20很相似;但实际意义不一样。
//int a+=20等价于 a = (short)(a + 20);
其余几种都是一个道理。
3,比较运算符:
比较运算符比较好理解,他简单来说就是用来作比较的符号。
比较运算符有这几种表现形式:“>”,“>=”,“<=”,“<”,“!=”,“==”。
我们需要注意的是:不管当前
比较运算符连接的是简单的数据还是复杂的表达式,最终运行的结果都是Boolean型。
4,逻辑运算符:
逻辑运算符主要的话就是分为三类: 与(&),或(|),非(!)。
在逻辑运算符中最为麻烦的部分也就是“&”和“|”两个操作了,因为他俩其都各有两种操作。
与操作:&或&&;
或操作:| 或 ||;
&操作:在进行多个条件判断的时候,只要所有的条件都满足了,他是才可以进入的。
当使用“ & ”的时候明确表示多个条件判断的时候,是都需要判断的。可是如果说前面已经有条件返回了false,后面即使有再多的true,最终还是false。所以理论上的判断就不应该在执行下去了,那么这时候我们就可以使用“&&”(短路与)来进行操作了。
使用"&&"来进行操作的话,当遇到false后,就输出false,后面的就不用在执行了。这样的话也便于操作。
| 操作:或操作的特点和就是若干个判断条件只要有一共是true,那么最终结果就是true,不管后面有多少个false。
使用 || 的话和&&差不都,只要遇到true,就输出true,后面的也就不用在执行了。
我们日常写代码用得最多的也就是“&&”,“||”来进行操作。
5,位运算符:
位运算符指的是可以按照二进制、八进制、十六进制、进行数据处理,基本上考虑最多的就是二进制。
位运算符他的表现形式是有:
1: 位与& :有0则0也就是遇假则假
2: 位或| : 有1则1也就是遇真则真
3: 位异或 ^ : 相同为0,不同为1
4: ~代码: 逐位取反,然后还需要通过得到的补码去推原码。
5: <<(左移): 将<<符号左边的数据 * 2的移动次幂。 例:2<<2 2*2^2
6: >>(右移): 将>>符号左边的数据 /2 的移动次幂。 例:24>>3 24/2^3
7: >>>(无符号右移): 无论最高位是0还是1,左边都是补0.
位异或的特点是:一个数据位异或另一个数据两次,其值是他本身! 例:a ^ b ^ b = a
6.三目运算:
格式:
(表达式)?执行 true的结果:执行false的结果;
执行流程:
1. 先判断表达式是否成立。
2. 如果成立,执行true的结果。
3. 不成立,执行false的结果。
/*
需求:
没有说明数据类型,都默认使用int接收!
获取两个整数中的最大值
获取三个整数中的最大值
比较两个整数是否相同
*/
class OperatorTest{
public static void main(String[] args){
//获取两个整数中的最大值
int a = 3 ;
int b = 4 ;
//三元运算符
int max = ((a>b)? a : b);
System.out.println("max:"+max);
//获取三个整数中的最大值
int x = 10 ;
int y = 30 ;
int z = 20 ;
//使用中间变量的方式(三元)
//定义变量temp
int temp = ((x > y)? x : y);
//使用temp和z进行比较
int max2 = (( temp > z) ? temp : z) ;
System.out.println("三个数据中的最大值是:"+max2);
//比较两个数是否相等
int x = 1;
int x = 2;
//使用三元直接操作。
//因为是Boolean类型所以直接比较。
boolean flag = (a == b);
System.out.println(flag);
7.键盘录入数据:
格式:
1.导包 : import Java.util.Sacnner; //注意:导包一定要写在claas上面要不然就会报错。
2.创建录入对象: sacnner sc = new scanner(System.in);
3.接收数据: int 变量名 = sc.nextInt();
4.输出: System.out.println(...);
例题:
//需求: 求三个数中的最大值。
import java .util.Scanner; //1,导包;
class ScannerTest{
public static void main(String[] args){
Scanner sc = new Scanner(System.in); //2,创建录入对象;
//提示;
System.out.println("输入第一个数据:");
int a = sc.nextInt(); //3,接收第一个数据;
System.out.println("输入第二个数据:");
int b = sc.nextInt(); //接收第二个数据;
System.out.println("输入第三个数据:");
int c = sc.nextInt(); //接收第三个数据;
int temp = (a>b)? a:b;
int max = (temp>c)? temp:c;
System.out.println("max:"+ max); //4,输出;
}
}
运行结果: