读字面量或者变量进行操作的符号
用运算符把字面量或者变量连接起来,符合Java语法的式子就可以称为表达式
不同运算符连接的表达式体现的是不是类型的表达式
符号 | 作用 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
package arithmetic;
public class ArithmeticDemo01 {
public static void main(String[] args) {
// +
System.out.println(3 + 2); // 5
// -
System.out.println(3 - 2); // 1
// *
System.out.println(3 * 2); // 6
// /
System.out.println(10 / 2); // 5
System.out.println(10 / 3); // 3
System.out.println(10.0 / 3); // 3.3333333333333335
// %
System.out.println(10 % 2); // 0
System.out.println(10 % 3); // 1
// 如果有小数参与运算
System.out.println(11.2 + 5.024); // 16.224
System.out.println(11.2 - 5.4); // 5.799999999999999
System.out.println(0.4 * 0.05); // 0.020000000000000004
}
}
题目:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
代码实现
package arithmetic;
import java.util.Scanner; // 导包
public class ArithmeticTest1 {
// 程序的主入口
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 创建对象
System.out.println("请输入一个三位数:");
int num = sc.nextInt(); // 接收对象
System.out.println("你输入的数是:" + num);
System.out.println("个位:" + num % 10);
System.out.println("十位:" + num / 10 % 10);
System.out.println("百位:" + num / 100 % 10);
}
}
规则
个位:数字 % 10
十位:数字 / 10 % 10
百位:数字 / 100 % 10
千位:数字 / 1000 % 10
以此类推
这个公式可以记一下,以后不管是学什么程序,都会经历这么一题,可以和hello world相提并论。
概念
取值范围小的数值转换成取值范围大的数值
取值范围
byte < short < int
转换规则
- 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,在进行运算。
- byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
举例
int a = 10;
double b = 13.14 ;
System.out.println(a + b); // 23.14
概念
如果把一个取值范围大的数值,赋值给取值范围小的变量,是不允许直接赋值的,如果一定要这么做,就需要加入强制转换
格式
目标数据类型 变量名 = (目标数据类型)被强转的数据;
举例
int a = 10;
double b = 13.14 ;
int res = (int) (a + b);
System.out.println((double) a); // 10.0
System.out.println((int) b); // 13
System.out.println(res); // 23
这两种强制转换的方式别的语言都是标配,只是语言不一样。
- 当
+
操作中出现字符串时,这个+
是字符串连接符,而不是算术运算符了。会将前后的数据进行拼接,并产生一个新的字符串- 连续进行
+
操作时,从左往右逐个执行
System.out.println("Hello" + "World"); // HelloWorld
System.out.println(1 + 1 + "Hello" + "World" + 1); // 2HelloWorld1
当
字符+字符
或字符+数字
时,会把字符通过ASCII码表查询到对应的数字在进行计算。
System.out.println('A' + 1); // 66
System.out.println('a' + 1); // 98
System.out.println('a' + 'b'); // 195
字符和字符相加不是新的字符串,而是对应ASCII码,这一点我吃惊了,不过又验证如果是字符类型相加,会自动提升成int,
符号 | 作用 | 说明 |
---|---|---|
++ | 加 | 变量的值加1 |
– | 减 | 变量的值减1 |
++
和--
既可以放在变量的前边,也可以放在变量的后边
- 单独使用:
++
和--
无论是放在变量的前边还是后边,单独写一行结果是一样的。- 参与计算
int b = a++;
先用后加int b = ++a;
先加后用
单独使用
package ArithmeticOperator;
public class ArithmeticDemo02 {
public static void main(String[] args) {
// ++和--
int a = 10;
a++;
System.out.println(a); // 11
++a;
System.out.println(a); // 12
a--;
System.out.println(a); // 11
--a;
System.out.println(a); // 10
}
}
参与计算
package ArithmeticOperator;
public class ArithmeticDemo02 {
public static void main(String[] args) {
// ++和++
int a = 10;
int b = a++;
int c = ++a;
System.out.println(a); // 12
System.out.println(b); // 10
System.out.println(c); // 12
}
}
a++
,先用后加。什么意思呢,他的执行顺序是:先b = a;
再 a+1
,因此b=10
而b++
,先加后用。他的执行顺序是:先a+1
再b = a;
,因为a++
的前面还有个a++
所以现在a=12
,又因为c=a
,所以c=12
这个知识点日常开发的时候用不到,一般都是用单行做写循环。但是考试要考。当时C语言这个知识点我一直弄不明白。考试的前一天还在看。
符号 | 作用 | 说明 |
---|---|---|
= |
赋值 | int a=10 ,将10赋值给变量a |
+= |
加后赋值 | a+=b , 将a+b的值给a |
-= |
减后赋值 | a-=b , 将a-b的值给a |
*= |
乘后赋值 | a*=b , 将a*b的值给a |
/= |
除后赋值 | a/=b , 将a/b的值给a |
%= |
取余后赋值 | a%=b , 将a%b的值给a |
+=
、-=
、*=
、/=
、%=
、底层都隐藏了一个强制类型转换
符号 | 解释 |
---|---|
== |
判断左边跟右边是否相等,如果成立就是true,如果不成立就是false |
!= |
判断左边跟右边是否不相等,如果成立就是true,如果不成立就是false |
> |
判断左边是否大于右边,如果成立就是true,如果不成立就是false |
>= |
判断左边是否大于等于右边,如果成立就是true,如果不成立就是false |
< |
判断左边是否小于右边,如果成立就是true,如果不成立就是false |
<= |
判断左边是否小于等于右边,如果成立就是true,如果不成立就是false |
注意事项:
- 关系运算符最终的结果一定是布尔类型的。要么是true,要么是false
- 在写==的时候,千万不要写成=
System.out.println(10 == 3); // false
题目
您和您的约会对象在餐厅里面正在约会。 键盘录入两个整数,表示你和你约会对象衣服的时髦度。(手动录入0~10之间的整数,不能录其他) 如果你的时髦程度大于你对象的时髦程度,相亲就成功,输出true。 否则输出false。
代码
package ComparisonOperator;
import java.util.Scanner;
public class ComparisonTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 创建对象
System.out.println("请输入你的时髦度:");
int yuo = sc.nextInt(); // 接收对象
System.out.println("请输入你对象的时髦度:");
int her = sc.nextInt(); // 接收对象
boolean res = yuo > her;
System.out.println("相亲情况:" + res);
}
}
符号 | 作用 | 说明 |
---|---|---|
& |
逻辑与(且) | 并且,两边都为真,结果才是真 |
` | ` | 逻辑或 |
^ |
逻辑异或 | 相同为false,不同为true |
! |
逻辑非 | 取反 |
package LogicalOperator;
public class LogicalOperatorDemo1 {
public static void main(String[] args) {
// &
System.out.println(true & true); // true
System.out.println(false & false); // false
System.out.println(false & true); // false
System.out.println(true & false); // false
// |
System.out.println(true | true); // true
System.out.println(false | false); // false
System.out.println(false | true); // true
System.out.println(true | false); // true
// ^
System.out.println(true ^ true);//false
System.out.println(false ^ false);//false
System.out.println(true ^ false);//true
System.out.println(false ^ true);//true
// !
System.out.println(!true); // false
System.out.println(!false); // true
}
}
异或,Java提出了一个这样的运算符。C语言好像是没有的,python没有。
怎么说呢,民政局结婚,男生和男生不可能结婚,女生和女生也是,但是男生和女生可以结婚。
可以用来写注册。用户名和密码不能是一致。
这个实际用的很少。
符号 | 作用 | 说明 |
---|---|---|
&& |
短路与 | 运算结果跟& 是一模一样的,只不过具有短路效果。 |
` | ` |
package LogicalOperator;
public class LogicalOperatorDemo1 {
public static void main(String[] args) {
// &&
System.out.println(true && true); // true
System.out.println(false && false); // false
System.out.println(false && true); // false
System.out.println(true && false); // false
// ||
System.out.println(true || true); // true
System.out.println(false || false); // false
System.out.println(false || true); // true
System.out.println(true || false); // true
}
}
注意事项:
&
、|
无论左边true false,右边都要执行。
&&
、‖
,如果左边能确定整个表达式的结果,右边不执行。
&&
:左边为false,右边不管是真是假,整个表达式的结果一定是false。
||
:左边为true,右边不管是真是假,整个表达式的结果一定是true。这两种情况下,右边不执行,提高了效率。
最常用的逻辑运算符:
&&
、||
、!
短路运算符也是Java自己独有的、什么意思呢?
package LogicalOperator;
public class LogicalOperatorDemo1 {
public static void main(String[] args) {
// &
System.out.println(true & true); // true
System.out.println(false & false); // false
System.out.println(false & true); // false
System.out.println(true & false); // false
// &&
System.out.println(true && true); // true
System.out.println(false && false); // false
System.out.println(false && true); // false
System.out.println(true && false); // false
}
}
这样看来,逻辑运算符与短路运算符并没有区别,接着看例子
package LogicalOperator;
public class LogicalOperatorDemo2 {
public static void main(String[] args) {
int a = 10;
int b = 10;
boolean result = a++ < 5 && b++ < 5;
System.out.println(result); // false
System.out.println(a); // 11
System.out.println(b); // 10
}
}
还有一段
package LogicalOperator;
public class LogicalOperatorDemo2 {
public static void main(String[] args) {
int a = 10;
int b = 10;
boolean result = a++ < 5 & b++ < 5;
System.out.println(result); // false
System.out.println(a); // 11
System.out.println(b); // 11
}
}
先说&
和 &&
的作用是一致的,两边都为真,结果才是真
boolean result = a++ < 5 && b++ < 5;
已经得出a++ < 5
这是假的了,这个结果已经是false了、所以b++ < 5
不在执行了。可以看作是b++ < 5
这边短路了。
而boolean result = a++ < 5 & b++ < 5;
已经得出a++ < 5
这是假的了,这个结果已经是false了、但是我不放心,我还要在计算一遍b++ < 5
。
&
和 &&
可以理解为执行效率不一样。&&
执行快。
- 最常用的逻辑运算符:
&&
、||
、!
题目
数字6是一个真正伟大的数 , 键盘录入两个整数。 如果其中一个为6 最终结果输出true。 如果它们的和为6的倍数。最终结果输出true。 其他情况都是false。
代码实现
// 数字6.Java
package LogicalOperator;
import java.util.Scanner;
public class LogicalOperatorTest1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 创建对象
System.out.println("请输入1个数字:");
int num1= sc.nextInt(); // 接收对象
System.out.println("请输入2个数字:");
int num2= sc.nextInt(); // 接收对象
boolean result;
result = num1 == 6 || num2 == 6 || (num1 + num2) % 6 ==0;
System.out.println(result);
}
}
作用
可以进行判断,根据判断内容得到不同的结果
格式
关系表达式? 表达式1: 表达式2;
计算规则
- 计算关系表达式的值。
- 如果关系表达式的值为真,那么执行表达式1。
- 如果关系表达式的值为假,那么执行表达式2。
注意点
三元运算符的最终结果一定要被使用,要么赋值给一个变量,要么直接打印出来。
package ThreeElementOperator;
public class ThreeElementOperatorDemo1 {
public static void main(String[] args) {
int a = 5;
int b = 10;
int max = a > b ? a: b;
System.out.println(max); // 10
System.out.println(a > b ? a: b); // 10
}
}
题目
动物园里有两只老虎,两只老虎的体重分别为通过键盘录入获得,
请用程序实现判断两只老虎的体重是否相同。
代码实现
package ThreeElementOperator;
import java.util.Scanner;
public class ThreeElementOperatorTest1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第1只老虎体重");
int weight1 = sc.nextInt();
System.out.println("请输入第2只老虎体重");
int weight2 = sc.nextInt();
int max = weight1 > weight2 ? weight1: weight2;
System.out.println(max); // 10
}
}
题目
一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm。
请用程序实现获取这三个和尚的最高身高。
代码实现
package ThreeElementOperator;
public class ThreeElementOperatorTest2 {
public static void main(String[] args) {
int number1 = 50;
int number2 = 75;
int number3 = 100;
int temp = number1 > number2 ? number1: number2;
int max = number3 > temp ? number3: temp;
System.out.println(max); // 100
}
}
优先级 | 运算符 |
---|---|
1 | . 、() 、{} |
2 | ! 、 ~ 、++ 、-- |
3 | * 、/ 、% |
4 | + 、- |
5 | << 、>> 、>>> |
6 | < 、<= 、> 、>= 、instanceof |
7 | == 、!= |
8 | & |
9 | ^ |
10 | ` |
11 | && |
12 | ` |
13 | ?: |
14 | = 、+= 、-= 、*= 、/= 、%= 、&= |
有的运算符好像还没有学到欸
这些内容好像是每个语言的标配,如果是计算机专业同学,自然而然这些也是常识了。但是也有那么几个不用的,
异或是什么?短路运算符是什么?然后Java的运算符优先级?
这些可能是需要重点看一下,学习一下,异或很少用,短路运算符可以当作逻辑运算符用,剩下的也没有什么了。
好了,我的学习笔记到此结束。
里面肯定有许许多多的bug,欢迎大家指出!毕竟这样成长更快。
也感谢大家可以看到这样,如果帮到了你,是我的荣幸。
谢谢大家!