Java语言基础-运算符

152 阅读2分钟

运算符

算术运算符

  • + 表示加法运算符
  • - 表示减法运算符
  • * 表示乘法运算符
  • / 表示除法运算符
  • % 表示取模/取余运算符

案例题目

  • 提示用户输入正整数类型的秒数,拆分秒数后输出x小时x分x秒。

    如:输入7199,输出1小时59分59秒。

/*
	运算符
*/
import java.util.Scanner;
public class OperatorTest {
	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 + "秒钟");
	}
}

字符串连接运算符

  • +可以实现字符串的连接。同时可以实现字符串与其他数据类型“相连”。

关系/比较运算符

  • > 表示是否大于运算符,>= 表示是否大于等于运算符。
  • < 表示是否小于运算符,<= 表示是否小于等于运算符。
  • == 表示是否等于运算符,!= 表示是否不等于运算符。
  • 所有以关系运算符作为最终运算符的表达式结果一定是boolean类型。

案例题目

  • 提示用户输入一个整数,使用关系运算符判断该整数是否为负数,若是打印true,若不是则打印false。
/*
	运算符
*/
import java.util.Scanner;
public class OperatorTest {
	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);
		
	}
}

自增减运算符

  • ++ 表示自增运算符,用于使得当前变量自身的数值加1的效果
  • -- 表示自减运算符,用于使得当前变量自身的数值减1的效果
  • 只能用于变量,常数不可以。

逻辑运算符

  • && 表示逻辑与运算符,相当于“并且”,同真为真,一假为假。
  • || 表示逻辑或运算符,相当于“或者”,一真为真,同假为假。
  • ! 表示逻辑非运算符,相当于“取反”,真为假,假为真。
  • 逻辑运算符的操作数均为boolean表达式。

逻辑运算符的图解

b1.png

逻辑运算符的短路特性

  • 对于逻辑与运算符来说,若第一个表达式为假则结果为假,此时跳过第二个表达式;
  • 对于逻辑或运算符来说,若第一个表达式为真则结果为真,此时跳过第二个表达式;

案例题目

  • 提示用户输入一个正整数,使用逻辑运算符判断该正整数是否为三位数,若是则打印true,否则打印false。
/*
	运算符
*/
import java.util.Scanner;
public class OperatorTest {
	public static void main(String[] args) {
		
		// 提示用户输入一个正整数
		System.out.println("请输入一个正整数:");
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		
		// 使用逻辑运算符判断该正整数是否为三位数,若是则打印true,否则打印false
		System.out.println(num >= 100 && num <= 999);
		
	}
}

条件/三目运算符

  • 条件表达式?表达式1:表达式2
  • 判断条件表达式是否成立,若成立的执行表达式1,否则执行表达式2。

案例题目

  • 提示用户输入两个整数,使用三目运算符找到最大值并打印出来。
/*
	运算符
*/
import java.util.Scanner;
public class OperatorTest {
	public static void main(String[] args) {
		
		// 提示用户输入两个整数
		System.out.println("请输入两个整数:");
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		
		// 使用三目运算符找到最大值并打印出来
		System.out.println("最大值是:" + (num1 > num2 ? num1 : num2));
		
	}
}

赋值运算符

  • = 表示赋值运算符,用于将=右边的数值赋值给=左边的变量,覆盖变量原来的数值。
  • 赋值表达式本身也有值,其本身之值即为所赋之值。
  • +=-=、*=/=、...

移位运算符

  • << 左移运算符,用于将数据的二进制位向左移动,右边使用0补充。
  • >> 右移运算符,用于将数据的二进制位向右移动,左边使用符号位补充。
  • >>> 表示逻辑右移运算符,用于将数据的二进制位向右移动,左边使用0补充。

位运算符

  • & 表示按位与运算符,按照二进制位进行与运算,同1为1,一0为0。
  • | 表示按位或运算符,按照二进制位进行或运算,一1为1,同0为0。
  • ~ 表示按位取反运算符,按照二进制位进行取反,1为0,0为1。
  • ^ 表示按位异或运算符,按照二进制位进行异或运算,同为0,不同为1。

运算符的优先级

  • ()优先级极高
  • =优先级极低
  • 若无法确认优先级,则使用()来确保即可。