2.4.5位运算符
<< 左移
>> 右移
>>> 无符号右移
& 与运算
| 或运算
^ 异或运算
~ 取反运算
int i = 21;
System.out.println(i<<3);
<<在一定范围内,每向左移一位相当于整体乘二
交换两个变量的值
方式一:定义临时变量
方式二:(类型必须相同)
int num1 = 10;
int num2 = 20;
num1 = num1 + num2;
num2 = num1 – num2;
num1 = num1 – num2;
三元运算符
结构:(条件表达式)? 表达式1:表达式2;
注意:
- 条件表达是的结果为boolean类型
- 根据真假来决定执行表达式1或者表达式2.
如果为true,执行表达式1
为false,则执行表达式2.
int m = 12;
int n = 5;
int max = (m < n) ? m : n;
System.out.println(max);
也可以嵌套使用
String maxStr = ( m > n ) ? “m大” : ((m = n)? ” m = n ” : n大 );
凡是可以使用三元运算符的地方,都可以使用if – else 流程控制语句。
若程序可以使用三元运算符,也可以使用流程控制语句,优先使用三元运算符。
程序的流程控制
顺序结构
分支结构
循环结构
if-else结构
分支结构
- 第一种结构
if(条件表达式){
执行表达式
}
- 第二种结构:二选一
if(条件表达式){
执行表达式
}else if(条件表达式){
执行表达式
}
- 第三种结构:多选一
if(条件表达式){
执行表达式
}else if(条件表达式){
执行表达式
}
…
else {
}
Scanner获取键盘输入
获取键盘输入值
具体实现步骤:
- 导包:improt java.util.Scanner;
- Scanner的实例化:Scanner scn = new Scanner(System.in);
- 调用Scanner类的相关方法(next()/ nextXxx()),来获取指定类型的变量。
注意:需要根据相应的方法,来输入指定类型的值。如果输入的数据类型与要求的类型不匹配时,会报异常,导致程序崩溃。
import java.util.Scanner;
class ScannerTest{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入姓名");
String name = scan.next();
System.out.println(name);
System.out.println("请输入年龄");
int age = scan.nextInt();
System.out.println(age);
System.out.println("请输入体重");
double weight = scan.nextDouble();
System.out.println(weight);
System.out.println("输入感觉");
boolean isLove = scan.nextBoolean();
System.out.println(isLove);
}
}
import java.util.Scanner;
class kaoshi{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
if(num ==100){
System.out.println("bmw");
}else if(num >80){
System.out.println("iphone");
}else if(num > 60){
System.out.println("ipad");
}else{
System.out.println("无");
}
}
}
说明:
- else结构是可选的。
- 针对表达式:
>如果多个条件表达式之间是“互斥”关系,哪个判断和执行语句声明在上面还是下面,无所谓
>如果多个表达式之间有交集的关系,需根据实际情况,考虑清楚应该哪个结构声明在上面。
>如果多个条件表达式之间有包含关系,通常情况下将范围小的声明在上面,大的在下面。否则 小的就没有机会执行
if-else测试
由键盘分别存入变量num1、num2、num3,并对他们排序,由小到大输出。
import java.util.Scanner;
class ifTest2{
public static void main(String[] args){
//输入数据
Scanner scan = new Scanner(System.in);
System.out.println("输入第一个数");
int num1 = scan.nextInt();
System.out.println("输入第二个数");
int num2 = scan.nextInt();
System.out.println("输入第三个数");
int num3 = scan.nextInt();
//计算
if(num1 >= num2 && num1>= num3){
if(num2 >= num3){
System.out.println(num1 + ","+ num2 + ","+ num3);
}else{
System.out.println(num1 + ","+ num3 + ","+ num2);
}
}else if(num2 >=num1 && num2 >=num3){
if(num1 >= num3){
System.out.println(num2 + ","+ num1 + ","+ num3);
}else{
System.out.println(num2 + ","+ num3 + ","+ num1);
}
}else{
if(num1 >= num2){
System.out.println(num3 + ","+ num1 + ","+ num2);
}else{
System.out.println(num3 + ","+ num2 + ","+ num1);
}
}
}
}