1.1. 运算符
对常量和变量进行操作的符号称为运算符
常用运算符:
-
算术运算符
-
赋值运算符
-
比较运算符
-
逻辑运算符
-
三元运算符
1.1.1. 算术运算符(掌握)
image.png用来四则运算的符号,和小学学习的加减乘除无异。
1.1.1.1. 加减乘除余(了解)
对于字符串而言,+符号表示连接操作,任何类型的数据和字符串相连接,结果都是字符串。
public class ArithmeticOperatorsDemo1{
public static void main(String[] args) {
// 定义两个变量
int a = 10;
int b = 5;
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(10 % 5);
System.out.println(10 % 3);
System.out.println(7 + 8 + "Hello");//15Hello
System.out.println("Hello" + 7 + 8);//Hello15
System.out.println(8765 / 1000 * 1000);//8000
//System.out.println(10 / 0);//除数为0,报错:ArithmeticException
}
}
1.1.1.2. 自增和自减(掌握)
自增:++,递增操作符,使变量值增加1,有前置和后置之分,只能操作变量。
自减:-- ,递减操作符,使变量值减去1,有前置和后置之分,只能操作变量。
自增和自减具体操作是一样的,仅仅是一个是加1,一个是减1而已,现在单讲++。
代码 result ++和 ++result,结果都是result变量的值加1。
唯一的区别是:
-
前置(++result): 表示对result加1之后的结果进行运算,
-
后置(result++): 表示对result变量加1之前的值(原始值)进行运算。
如果仅仅执行简单的递增操作(只写result++或++result),那么选用任意一个都可以。
public class ArithmeticOperatorsDemo2{
public static void main(String[] args) {
int a1 = 5;
int b1 = ++ a1;
System.out.println("a1=" + a1 + ",b1=" + b1);//a1=6,b1=6
int a2 = 5;
int b2 = a2 ++;
System.out.println("a2=" + a2 + ",b2=" + b2);//a2=6,b2=5
}
}
比较权威的解释:
-
++a表示取a的地址,增加它的内容,然后把值放在寄存器中;
-
a++表示取a的地址,把它的值装入寄存器,然后增加内存中的a的值;
如果不理解什么是寄存器,简单记住,都可以表示当前变量自身加1,区别是:
-
前置++:先增加后使用
-
后置++:先使用后增加
1.1.2. 赋值运算符(掌握)
image.pngpublic class AssigningOperatorDemo {
public static void main(String[] args) {
// 把常量17赋值给int类型的变量a
int a = 17;
System.out.println("a=" + a);
// += 把左边和右边的数据进行运算,最后赋值左边变量
a += 10;// 相当于a = a + 10
System.out.println("a=" + a);
short s = 5;
s += 2; //底层相当于 s = (short) (s + 2)
System.out.println("s=" + s);
}
}
1.1.3. 比较运算符(掌握)
用于比较两个变量或常量之间的大小关系,其结果是boolean类型(要么为true,要么为false)。
其操作格式为:
boolean result = 表达式A 比较运算符 表达式B;
image.png
注意:>=符号,表示大于或者等于。
public class ComparisonOperatorDemo {
public static void main(String[] args) {
//直接操作常量
System.out.println(10 > 5);//true
System.out.println(10 >= 5);//true
System.out.println(10 >= 10);//true
System.out.println(10 < 5);//false
System.out.println(10 <= 5);//false
System.out.println(10 <= 10);//true
System.out.println(10 == 10);//true
System.out.println(10 != 10);//false
//使用变量操作
int a = 10;
int b = 5;
boolean result = a > b;
System.out.println(result);//true
}
}
1.1.4. 三元运算符(掌握)
三元运算符,表示有三个元素参与的表达式,所以又称为三目运算符,其语义表示if-else(如果什么情况就做什么,否则做什么)。
语法格式:数据类型 变量 = boolean表达式 ? 结果A :结果B;
-
如果boolean表达式结果:
-
为true,则三元运算符的结果是结果A;
-
为false,则三元运算符的结果是结果B;
注:三元运算符必须定义变量接受运算的结果,否则报错
三元运算符结果的类型由结果A和结果B来决定的,结果A和结果B的类型是相同的。
需求1:判断一个数99是不是偶数
public class TernaryOperatorDemo1{
public static void main(String[] args) {
int a = 99;
String result = a % 2 == 0 ? "偶数" : "奇数";
System.out.println(result);
}
}
需求2:求99和20两个数中的最大值
public class TernaryOperatorDemo2{
public static void main(String[] args) {
int a = 99;
int b = 20;
int result = a > b ? a : b;
System.out.println("最大值:"+result);
}
}
需求3:一共55条数据,每叶10个条数据,一共分多少页
image.pngpublic class TernaryOperatorDemo3{
public static void main(String[] args) {
int totalCount = 54;
int pageSize = 10;
int totalPage = totalCount % pageSize == 0
? totalCount / pageSize
: totalCount / pageSize + 1;
System.out.println(totalPage);
}
}
1.1.5. 逻辑运算符(掌握)
逻辑运算符用于连接两个boolean表达式,结果也是boolean类型的。
语法格式为:boolean result = boolean表达式A 逻辑运算符 boolean表达式B;
运算规则如下:
image.png规律:
-
非:取反,!true则false,!false则true
-
与:有false则false
-
或:有true则true
-
异或:^ 相同则false,不同则true
1.1.5.1. 基本使用(掌握)
public class LogicalOperatorDemo1 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
//与操作
System.out.println((a > b) & (a > c));// false & false
System.out.println((a > b) & (a < c)); // false & true
System.out.println((a < b) & (a > c)); // true & false
System.out.println((a < b) & (a < c)); // true & true
//或操作
System.out.println((a > b) | (a > c));// false | false
System.out.println((a > b) | (a < c)); // false | true
System.out.println((a < b) | (a > c)); // true | false
System.out.println((a < b) | (a < c)); // true | true
//相反操作
System.out.println((a > b)); // false
System.out.println(!(a > b)); // !false
System.out.println(!!(a > b)); // !!false
}
1.1.5.2. &和&&的区别(掌握)
& :&左边表达式无论真假,&右边表达式都进行运算;
&& :如果&&左边表达式为真,&&右边表达式参与运算,否则&&右边表达式不参与运算,故称短路与。
| 和 || 的区别同理,||,左边为真,右边不参与运算。
public class LogicalOperatorDemo2 {
public static void main(String[] args) {
System.out.println(false & 1 / 0 == 1);//报错,说明右边执行了
System.out.println(false && 1 / 0 == 1);//不报错,说明右边没有执行
System.out.println(true | 1 / 0 == 1);//报错,说明右边执行了
System.out.println(true | 1 / 0 == 1);//不报错,说明右边没有执行
}
}
上述代码,一行一行的测试,测试完,注释该行代码。
1.1.6. 运算优先级
表达式的运算都是有优先级的,基本上和数学中的优先级类似,这里需要注意的是,赋值符号。
注意:赋值符号最后运算的,并且是从右向左运算的。
image.png若要获得最好的学习效果,需要配合对应教学视频一起学习。需要完整教学视频,请参看https://ke.qq.com/course/272077。
网友评论