1、运算符(重点)
1.1、算术运算符
• + 表示加法运算符
• - 表示减法运算符
• * 表示乘法运算符
• / 表示除法运算符
• % 表示取模/取余运算符
public class ArithmeticTest {
public static void main(String[] args) {
int ia = 6;
int ib = 2;
System.out.println("ia = " + ia);
System.out.println("ib = " + ib);
System.out.println("----------------------------------------");
int ic = ia + ib;
System.out.println("ic = " + ic);
System.out.println(ia + ib);
System.out.println(ia - ib);
System.out.println(ia * ib);
System.out.println(ia / ib);
System.out.println(ia % ib);
System.out.println("----------------------------------------");
System.out.println(5 / 2);
System.out.println("----------------------------------------");
System.out.println((double)5 / 2);
System.out.println(5 / (double)2);
System.out.println((double)5 / (double)2);
System.out.println((double)(5 / 2));
System.out.println(5*1.0 / 2);
System.out.println(5.0 / 2);
System.out.println("----------------------------------------");
System.out.println(5 / 0.0);
System.out.println(0 / 0.0);
}
}
案例题目
• 提示用户输入正整数类型的秒数,拆分秒数后输出x小时x分x秒。
• 如:输入7199,输出1小时59分59秒。
import java.util.Scanner;
public class ArithmeticTimeTest {
public static void main(String[] args) {
System.out.println("请输入一个正整数的秒数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int hour = num / 3600;
int min = num % 3600 / 60;
int sec = num % 60;
System.out.println(num + "秒转换为" + hour + "小时" + min + "分钟" + sec + "秒钟");
System.out.println("---------------------------------------------------------------------");
System.out.println(hour + min + sec);
System.out.println(hour + min + sec + "");
System.out.println(hour + min + "" + sec);
System.out.println(hour + "" + min + sec);
System.out.println("" + hour + min + sec);
System.out.println("" + (hour + min + sec));
}
}
1.2、字符串连接运算符
• + 可以实现字符串的连接。同时可以实现字符串与其他数据类型“相连”。
1.3、关系/比较运算符
• > 表示是否大于运算符 >=表示是否大于等于运算符
• < 表示是否小于运算符 <= 表示是否小于等于运算符
• == 表示是否等于运算符 != 表示是否不等于运算符
• 所有以关系运算符作为最终运算的表达式结果一定是boolean类型。
public class RelationTest {
public static void main(String[] args) {
int ia = 5;
int ib = 2;
boolean b1 = ia > ib;
System.out.println("b1 = " + b1);
System.out.println(ia > ib);
System.out.println(ia >= ib);
System.out.println(ia < ib);
System.out.println(ia <= ib);
System.out.println(ia == ib);
System.out.println(ia != ib);
}
}
案例题目
• 提示用户输入一个整数,使用关系运算符判断该整数是否为负数,
若是 则打印true,若不是则打印false。
import java.util.Scanner;
public class RelationJudgeTest {
public static void main(String[] args) {
System.out.println("请输入一个整数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
boolean b1 = num < 0;
System.out.println("b1 = " + b1);
System.out.println(num < 0);
}
}
1.4、自增减运算符
• ++ 表示自增运算符,用于使得当前变量自身的数值加1的效果
• -- 表示自减运算符,用于使得当前变量自身的数值减1的效果
• 只能用于变量,常数不可以
public class SelfTest {
public static void main(String[] args) {
int ia = 10;
System.out.println("ia = " + ia);
System.out.println("---------------------------------------------");
ia++;
System.out.println("ia = " + ia);
++ia;
System.out.println("ia = " + ia);
--ia;
System.out.println("ia = " + ia);
ia--;
System.out.println("ia = " + ia);
System.out.println("---------------------------------------------");
System.out.println(ia++);
System.out.println("ia = " + ia);
System.out.println(++ia);
System.out.println("ia = " + ia);
System.out.println("---------------------------------------------");
int ib = ia++;
System.out.println("ib = " + ib);
System.out.println("ia = " + ia);
int ic = ++ia;
System.out.println("ic = " + ic);
System.out.println("ia = " + ia);
System.out.println(ia++ + ++ia);
System.out.println("ia = " + ia);
}
}
1.5、逻辑运算符
• && 表示逻辑与运算符,相当于"并且",同真为真,一假为假。
• || 表示逻辑或运算符,相当于"或者",一真为真,同假为假。
• ! 表示逻辑非运算符,相当于"取反",真为假,假为真。
• 逻辑运算符的操作数均为boolean表达式。
逻辑运算符的图解
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3ed01658622f38ca97049e4074f10667.png)
逻辑运算符的短路特性
• 对于逻辑与运算符来说,若第一个表达式为假则结果为假,此时跳过第 二个表达式;
• 对于逻辑或运算符来说,若第一个表达式为真则结果为真,此时跳过第 二个表达式;
public class LogicTest {
public static void main(String[] args) {
boolean b1 = true;
boolean b2 = false;
System.out.println("b1 = " + b1);
System.out.println("b2 = " + b2);
System.out.println("---------------------------------------------");
boolean b3 = b1 && b2;
System.out.println("b3 = " + b3);
System.out.println(b1 && b2);
System.out.println(b1 || b2);
System.out.println(!b1);
System.out.println(!b2);
System.out.println("---------------------------------------------");
int ia = 3;
int ib = 5;
boolean b4 = (++ia == 3) && (++ib == 5);
System.out.println("b4 = " + b4);
System.out.println("ia = " + ia);
System.out.println("ib = " + ib);
boolean b5 = (++ia == 5) || (++ib == 5);
System.out.println("b5 = " + b5);
System.out.println("ia = " + ia);
System.out.println("ib = " + ib);
}
}
案例题目
• 提示用户输入一个正整数,使用逻辑运算符判断该正整数是否为三位数,
若是则打印true,否则打印false。
import java.util.Scanner;
public class LogicJudgeTest {
public static void main(String[] args) {
System.out.println("请输入一个正整数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
System.out.println(100 <= num && num <= 999);
System.out.println(num + ((100 <= num && num <= 999)? "是三位数": "不是三位数"));
}
}
1.6、条件/三目运算符
• 条件表达式? 表达式1: 表达式2
• 判断条件表达式是否成立,若成立则执行表达式1,否则执行表达式2 。
案例题目
• 提示用户输入两个整数,使用三目运算符找到最大值并打印出来。
import java.util.Scanner;
public class ThreeEyeTest {
public static void main(String[] args) {
System.out.println("请输入两个整数:");
Scanner sc = new Scanner(System.in);
int ia = sc.nextInt();
int ib = sc.nextInt();
int max = ia > ib? ia: ib;
System.out.println("最大值是:" + max);
System.out.println("最大值是:" + (ia > ib? ia: ib));
}
}
1.7、赋值运算符
• = 表示赋值运算符,用于将=右边的数据赋值给=左边的变量,覆盖变量 原来的数值。
• 赋值表达式本身也有值,其本身之值即为所赋之值。
• +=、 -=、 *=、 /=、 ...
public class AssignTest {
public static void main(String[] args) {
int ia = 3;
System.out.println("ia = " + ia);
System.out.println("-----------------------------------");
ia = 5;
System.out.println("ia = " + ia);
System.out.println( ia = 5 );
System.out.println("ia = " + ia);
int ib = ia = 6;
System.out.println("ia = " + ia);
System.out.println("ib = " + ib);
int ic;
ic = ib = ia = 8;
System.out.println("ia = " + ia);
System.out.println("ib = " + ib);
System.out.println("ic = " + ic);
System.out.println("-----------------------------------");
ia += 2;
System.out.println("ia = " + ia);
System.out.println("-----------------------------------");
byte b1 = 10;
System.out.println("b1 = " + b1);
b1 += 2;
System.out.println("b1 = " + b1);
System.out.println("-----------------------------------");
}
}
1.8、移位运算符(了解)
• << 左移运算符,用于将数据的二进制位向左移动,右边使用0补充
• >> 右移运算符,用于将数据的二进制位向右移动,左边使用符号位补充
• >>> 表示逻辑右移运算符,用于将数据的二进制位向右移动,左边使用0 补充。
public class MoveBitTest {
public static void main(String[] args) {
byte b1 = 13;
System.out.println("b1 = " + b1);
System.out.println("---------------------------------------------------");
byte b2 = (byte)(b1 << 1);
System.out.println("b2 = " + b2);
System.out.println(b1 << 1);
System.out.println(b1 << 2);
System.out.println("---------------------------------------------------");
System.out.println(b1 >> 1);
System.out.println(b1 >> 2);
System.out.println("---------------------------------------------------");
System.out.println(b1 >>> 2);
}
}
1.9、位运算符(了解)
• & 表示按位与运算符,按照二进制位进行与运算,同1为1,一0为0.
• | 表示按位或运算符,按照二进制位进行或运算,一1为1,同0为0.
• ~ 表示按位取反运算符,按照二进制位进行取反,1为0,0为1.
• ^ 表示按位异或运算符,按照二进制位进行异或运算,同为0,不同为1.
public class BitTest {
public static void main(String[] args) {
byte b1 = 11;
byte b2 = 13;
System.out.println("b1 = " + b1);
System.out.println("b2 = " + b2);
System.out.println("---------------------------------------------------");
System.out.println( b1 & b2);
System.out.println( b1 | b2);
System.out.println( b1 ^ b2);
System.out.println( ~ b1);
}
}
1.10、运算符的优先级
• ()的优先级极高。
• =的优先级极低。
• 若无法确认优先级,则使用()来确保即可。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d11ff24ab35e1c99c861b0f43da56b18.png)