------------恢复内容开始------------
选择结构
- 选择结构分为为i语句和switch语句
目录
- 选择结构
- if语句
- 3.if多选择结构
- 4.if嵌套选择结构
- Switch多选择结构
- if语句
if语句
1.if单选择语句
结构图:(用输出语句打了一个简单结构图)
代码示例:
public class IfDemo01 {
public static void main(String[] args) {
/*if单选择语句
if(布尔值为true){
代码块
}
*/
Scanner sc=new Scanner(System.in);
System.out.println(\"请输入内容:\");
//将键盘输入的值传给s
String s=sc.nextLine();
//equals判断字符串是否相等
if (s.equals(\"Hello\")){
System.out.println(\"字符串相等 ,输入的字符串为\"+s);
}
System.out.println(\"End\");
sc.close();
}
}
输出:
请输入内容:
Hello
字符串相等 ,输入的字符串为Hello
End
2.if双选择结构
代码示例:
public class IfDemo02 {
public static void main(String[] args) {
/*if双选择语句(布尔值为ture执行代码块1,为false执行代码快2)
if(布尔值为true){
代码块1
}else{
代码块2
}
*/
//判断输入的考试分数是否及格,小于60为不及格
Scanner sc=new Scanner(System.in);
System.out.println(\"输入考试成绩:\");
int score= sc.nextInt();
if (score<60){
System.out.println(\"不及格\");
}else {
System.out.println(\"成绩及格\");
}
sc.close();
}
}
输出:
输入考试成绩:
90
成绩及格
3.if多选择结构
代码示例:
public class IfDemo03 {
//if多选择结构.if与else if中的语句有一个为真,则执行对应的代码快,若为false执行else中的内容
/*
if(){
}else if(){
}else if(){
}......
else{}
*/
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println(\"请输入成绩:\");
int score=sc.nextInt();
if (score >=90) {
System.out.println(\"优秀\");
}else if (score<90&&score>=80){
System.out.println(\"良好\");
}else if (score<80&&score>=60){
System.out.println(\"及格\");
}else if (score>=0&&score<60){
System.out.println(\"不及格\");
}
else {
System.out.println(\"请输入正确的成绩\");
}
}
}
输出:
请输入成绩:
80
良好
请输入成绩:
50
不及格
请输入成绩:
100
优秀
4.if嵌套选择结构
代码示例:
public class IfDemo04 {
public static void main(String[] args) {
//if嵌套选择结构,用嵌套快速查找一个数
/* if (外层表达式){
if (内层表达式){
内层代码块1
}else{
内层代码块2
}
}else{
外层代码块
}
*/
//判断学生成绩超过60的选手,是否为优秀(score>=90)
Scanner sc=new Scanner(System.in);
System.out.println(\"输入学生成绩:\");
int score=sc.nextInt();
if (score>=60){
if (score>=90){
System.out.println(\"恭喜你,你的成绩为优秀\");
}else {
System.out.println(\"你的成绩为\"+score);
}
}else if (score<60&&score>=0){
System.out.println(\"不及格\");
}
}
}
输出:
输入学生成绩:
90
恭喜你,你的成绩为优秀
输入学生成绩:
80
你的成绩为80
Switch多选择结构
switch(value){
case value1:
//语句
break;//可选
//case的数量可以是任意个
case value2:
break;
default://可选
//语句
}
代码示例:
public class SwitchDemo01 {
public static void main(String[] args) {
//
char grade=\'C\';
switch (grade){
//break的作用是防止case击穿,如果不加break,语句会把语句执行下去
case \'A\':
System.out.println(\"优秀\");
break;
case \'B\':
System.out.println(\"良好\");
break;
case \'C\':
System.out.println(\"及格\");
case \'D\':
System.out.println(\"不及格\");
}
}
}
输出:
及格
不及格
注:输入值为\'C\',本应输出结果\"及格\",但是因为在输出语句后面没有加break;及时跳出循环,导致,case击穿,把下面的”不及格“也同时输出了!
default与if中的else语句类似,当输入的值,没有在各个value值中间时,执行default对应的代码块
代码案例:
package com.ling.struct;
public class SwitchDemo02 {
public static void main(String[] args) {
//jdk7之后,表达式结果可以是字符串
String name=\"\";
switch (name){
case \"小星\":
System.out.println(\"你好,小星\");
break;
case \"小爱\":
System.out.println(\"你好,小爱\");
break;
default:
System.out.println(\"啥也不是!\");
}
}
}
输出结果:
啥也不是!
深入研究循环中的字符串值比较
因为字符的本质还是数字
在java中,我们都知道有java通过编译形成的字节码文件-------通过反编译来查看就可知道其中原理
通过查看idea中的反编译文件,可以看到
public class SwitchDemo02 {
public SwitchDemo02() {
}
public static void main(String[] args) {
String name = \"小星\";
byte var3 = -1;
//通过哈希表,可以知道,每一个对象(在这里是字符串)都有对应的哈希值
//通过hashcode()方法获取到对象的哈希值,再进行比较,就相当于比较字符串了
switch(name.hashCode()) {
case 756720:
if (name.equals(\"小星\")) {
var3 = 0;
}
default:
switch(var3) {
case 0:
System.out.println(\"你好,小星\");
default:
}
}
}
------------恢复内容结束------------
来源:https://www.cnblogs.com/lingstar/p/16448900.html
本站部分图文来源于网络,如有侵权请联系删除。