表达式及分类
表达式:由运算符和操作数组成的符合Java语法的式子
操作数可以是变量、常数或者函数
运算时使用变量此时的值运算
多种数据类型做运算时可能结果的类型可能发生改变
分类:
由不同的运算符构成的表达式有各自的名字,如算是表达式,逻辑表达式等
其他:
scanner类可以用来接受输入数据:
需要引入一个Scanner的包
import java.util.Scanner;
Scanner sc1 = new Scanner();//创建一个Scanner实例
int num = sc.next();//读取输入内容并且赋值进num变量
运算符及优先级
Java在执行运算任务时仍是将变量读取至内存并交由CPU进行处理,处理后转存至内存并将数据进行存储输出
分类
赋值运算符:“ = ”
赋值时需要保证代码可读性,单独声明变量并赋值
表示将右边的量赋值给左边的量(右结合),如:
int a = 100;//将100值赋值给int类型变量a
int b = a;//将a的值赋值给b
算术运算符:“ + ”、“ - ”、“ * ”、“ / ”等
二元运算符:
“ + ” 加法运算符:两个数据进行加法运算,如:
int num1 = 1;
int num2 = 2;
int num3 = num1 + num2;//将两个空间内的数值加载进内存并访入cpu中进行计算,并将结果存入num3的内存空间中
*如果其中一方为字符串(String)则结果也必定为字符串(String),如:
int num = 100;
System.out.println("the number is :" + num);//输出为字符串类型的the number is :100(字符串类型)
“ - ” 减法运算符:两个数进行减法运算,如:
int num1 = 3;
int num2 = 1;
int num3 = num1 - num2;
“ * ” 乘法运算符:将两个操作数进行乘法运算,规则与上述运算符类似
“ / ” 除法运算符:若操作数中均为整数类型,则结果为整数,若想要结果为浮点数类型,则需在两个操作数中声明一个为浮点数类型
“ % ” 模运算符:操作数对另一个数取余操作(即一个数减去这个数对另一个数的商),如:
int num1 = 10;
int num2 = 5;
int num3 = num1 % num2;//读作num1对num2取模
一元运算符:“ - ”(负号、“ ++ ”、“ – ”
自增运算符:“ ++ ”
对操作数进行加一操作并将其赋值给原变量,分在变量前和变量后,若++在变量前,则将在本语句开始前进行自增操作,若在后面,则在本句运行完毕后再进行自增操作,如:
int num = 1;
System.out.println(num++);//这里输出的为1,在打印命令执行完后才进行加运算
int num = 1;
System.out.println(++num);//这里输出的为2,在打印命令前进行加运算
自减运算符:“ – ”
与自增同理,也分前和后
int num = 1;
System.out.println(--num);//输出为0
System.out.println(num--);//输出仍为0
与递增运算同理
复合运算符,如:“ += ”、“ -= ”、“ *= ”、“ /= ”、“ %= ”
格式为 操作数 操作符 操作数
兼顾运算和赋值,将运算后的数重新赋值给运算前的变量,可以避免太多重复代码,如:
int num = 1;
num += 1;//等效于num = num + 1,其他同理
三目运算符
用于简单的条件判断赋值,可以节省很多代码
其基本规则为:条件表达式 ? 值一 : 值二
条件成立返回值一,条件不成立返回值二,如:
int num1 = 1;int num2 = 2;int max;
max = num1 > num2 ? num1 : num2;//这里意思为max的赋值判断为是否满足num1>num2,若成立将num1赋值给max,反之将num2赋值给max
关系运算符
如:“ > ”、“ < ”、“ == ”、“ != ”等
关系表达式的计算结果为逻辑值(boolean类型)
如果表达式成立则返回值为true,反之为false
大于小于符号需要数字才能比大小,如:
int num1 = 1;int num2 = 2;
System.out.println(num1 < num2);//结果为true
等于和不等于两边的类型需要相同才能进行逻辑运算,如:
- 字符串的相等判断不能直接用等号,需要调用equal函数判断
int num1 = 1;int num2 = 1;
System.out.println(num1 == num2);//结果为true
String str1 = "你好";String str2 = "您好";
System.out.println(str1.equal(str2));//结果为true
逻辑运算符
包含“&&”(且)、“ || ”(或)、“ !”(非)
详细规则可以参考真值表
运算操作数为逻辑值(布尔值)得到的数也为逻辑值,常用关系表达式来得到逻辑值,逻辑运算符两端可能包含多个关系表达式和算术表达式,如:
int num1 = 1;int num2 = 2;
System.out.println(num1 > num2 || num1 < num2);//结果为true,因为其为或运算两边只要有一个为true则结果为true
位运算符
“ & ”和“ | ”或“ >> ”、“ >>> ”等对数字的具体内存位上的状态进行判断
优先级
指各种不同的运算符具有不同的先后运算顺序,顺序如下:
()可以改变运算优先顺序,一般最里层的括号先进行计算,括号内的计算顺序仍遵循上述计算顺序