运算符、if条件结构

关系运算符

==

!=

<

>

>=

<=

1.关系运算符运算的结果是boolean类型

2.可以使用boolean类型的变量接收关系运算的结果

public class Demo01 {

public static void main(String[] args) {

int a = 10;
int b = 11;

System.out.println(a == b); // false

boolean result = a != b;
System.out.println(result);

}

逻辑运算符

&& 短路与

|| 短路或

! 非、取反

1.用于运算多个boolean类型的算式

2.运算结果仍然是boolean类型

& 按位与

| 按位或

1.可以用于进行数字的位运算

2.可以进行不短路的逻辑判断

public class Demo02 {

public static void main(String[] args) {

int a = 10;
int b = 11;
int c = 12;

// a大于b并且c大于b
// a > b false
// c > b true
// false && true = false
System.out.println(a > b && c > b);

// false || true = true
System.out.println(a > b || c > b);

// !false = true
System.out.println(!(a > b && c > b));

//--------------------------------

int i = 6;
int j = 8;
int k = 10;

// && 短路与,如果前面的结果为false,后面将不再执行判断
boolean result = i > j && (i += 6) > j; // false
System.out.println(result); // false
System.out.println(i); // 6

// || 短路或,如果前面的结果为true,后面将不再执行判断
boolean result1 = i < j || (i += 6) > j;
System.out.println(result1); // true
System.out.println(i); // 6

//----------------------------------------

int n = 6;
int m = 8;

// 6 -> 0110
// 8 -> 1000
// 0000 -> 0
System.out.println(n & m); // 0

int n1 = 11;
int m1 = 13;

// 11 -> 1011
// 13 -> 1101
// 1111 -> 15
System.out.println(n1 | m1); // 15

// 判断一个数是奇数还是偶数
// 方式一:对2取余
int x = 6;
System.out.println(x % 2 == 0); // true

// 方式二:位运算
// 6 -> 0110
// 1 -> 0001
System.out.println((x & 1) == 0); // true



int i1 = 6;
int j1 = 8;

// & 按位与,如果前面的结果为false,后面也会执行判断,不会短路
boolean result2 = i1 > j1 & (i1 += 6) > j1; // false
System.out.println(result2); // false
System.out.println(i1); // 12

}

条件运算符

三目运算符、三元表达式

格式:条件 ? 表达式1 : 表达式2

分析:条件为true,执行表达式1,条件为false,执行表达式2

public class Demo03 {

public static void main(String[] args) {

System.out.println(1 > 2 ? "1 > 2" : "1 < 2");

String str = 1 > 2 ? "1 > 2" : "1 < 2";
System.out.println(str);
}

Java程序的三种结构

顺序结构

从上到下顺序执行每一行代码

分支结构

使用条件判断构建分支

条件语句

if

1.格式1:if (判断式) {代码块},当判断式结果为true时,运行代码块。

2.格式2:if (判断式) {代码块1} else {代码块2},当判断式结果为true时,运行代码块1,否正执行代码块2。

3.格式3:if (判断式1) {代码块1} else if (判断式2) {代码块2}…,当判断式1结果为true,执行代码块1,否正继续判断判断式2…

switch

示例代码

public class Demo04 {

public static void main(String[] args) {

/*
* 分数分级:
* >= 90 优秀
* >= 80 良好
* >= 60 及格
* < 60 不及格
*/
double score = 55.5;
String result = score >= 90 ? "优秀" : score >= 80 ? "良好" : score >= 60 ? "及格" : "不及格";
System.out.println(result);

// 分数 > 90 奖励一个iphone12
if (score > 90) {
System.out.println("奖励一个iphone12");
}

// Java成绩大于90分,并且Html成绩大于80;或者Java成绩等于100分,Html成绩大于70分。奖励iphone12.
double java = 10;
double html = 81;
if ((java > 90 && html > 80) || (java == 100 && html > 70)) {
System.out.println("奖励一个iphone12");
}

// Java成绩大于90分,奖励一个iphone12,否则试卷抄10遍。
// if (java > 90) {
// System.out.println("奖励一个iphone12");
// }
// if (java <= 90) {
// System.out.println("试卷抄10遍");
// }
if (java > 90) {
System.out.println("奖励一个iphone12");
} else {
System.out.println("试卷抄10遍");
}

// 分数分级
// if (score >= 90) {
// System.out.println("优秀");
// }
// if (score >= 80 && score < 90) {
// System.out.println("良好");
// }
// if (score >= 60 && score < 80) {
// System.out.println("及格");
// }
// if (score < 60) {
// System.out.println("不及格");
// }

if (score >= 90) {
System.out.println("优秀");
} else if (score >= 80) {
System.out.println("良好");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}


// 根据百米赛跑成绩和性别分组
double time = 9;
String sex = "女";
// 判断成绩是否入围
if (time <= 10) {
System.out.println("你入围了");

// 判断性别,进行分组
if (sex.equals("男")) {
System.out.println("你进入了男子组");
} else if (sex.equals("女")) {
System.out.println("你进入了女子组");
} else {
System.out.println("你进入其他组");
}

} else {
System.out.println("你淘汰了");
}

}

循环结构

使用循环语句实现代码块的循环执行

分支结构

例题1:用户从控制台输入4位会员卡号,计算各个位数之和,例如:输入1234,输出10

package org.jgs2007.work;

import java.util.Scanner;

/**
* 用户从控制台输入4位会员卡号
* 计算各个位数之和
* 例如:输入1234,输出10
*
* @author junki
* @date 2020年6月19日
*/
public class Work01 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("请输入一个四位数:");
int num = sc.nextInt();

// 求各个位数之和
int a = num % 10; // 获取个位数
int b = num / 10 % 10; // 获取十位数
int c = num / 100 % 10; // 获取百位数
int d = num / 1000; // 获取千位数

System.out.println(a + b + c + d);


sc.close();

}

}

例题2:运算符练习

package org.jgs2007.work;

/**
* 运算符练习
*
* @author junki
* @date 2020年6月19日
*/
public class Work02 {

public static void main(String[] args) {

int y = 10;
System.out.println(y++ == --y); // true
System.out.println(y); // 10

}

}

例题3:判断会员是否中奖

package org.jgs2007.work;

import java.util.Scanner;

/**
* 判断会员是否中奖
*
* @author junki
* @date 2020年6月19日
*/
public class Work03 {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

System.out.println("请输入一个四位数:");
int num = sc.nextInt();

// 求各个位数之和
int a = num % 10; // 获取个位数
int b = num / 10 % 10; // 获取十位数
int c = num / 100 % 10; // 获取百位数
int d = num / 1000; // 获取千位数

int sum = a + b + c + d;

// 判断是否大于20
String result = sum > 20 ? "中奖!" : "很遗憾!";

System.out.println(result);

sc.close();

}

}

例题4:判断会员号百位数是否和随机数相同,相同则中奖。

package org.jgs2007.work;

import java.util.Scanner;

/**
* 判断会员号百位数是否和随机数相同,相同则中奖。
* @author junki
* @date 2020年6月19日
*/
public class Work04 {

public static void main(String[] args) {

// 获取随机数[0,1)
double random = Math.random();
System.out.println(random);

// 获取[0,9]之间的整数随机数
// Math.random() * 10; => [0,10)之间的浮点数
// (int)(Math.random() * 10) => [0,9]之间的整数
int num = (int)(Math.random() * 10);
System.out.println(num);

// 获取会员卡百位数
Scanner sc = new Scanner(System.in);

System.out.println("请输入四位会员卡号:");

int vipNum = sc.nextInt();
if (vipNum / 100 % 10 == num) {
System.out.println("恭喜你,中奖了!");
} else {
System.out.println("很遗憾,未中奖!");
}

sc.close();
}

}