Java语法基础(逻辑控制)
目录
前言:
在上篇中,我们介绍了Java的各种运算符, 本文将详细介绍 Java 中的三种逻辑结构:顺序结构、分支结构、循环结构,这三大结构也是代码的组成方式。是支撑编程语言成功执行的核心。非常重要!!!
一,顺序结构
⚙顺序结构就是按照代码的书写顺序一行一行的去执行。
图示:
代码示例:
System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
/*运行结果:
aaa
bbb
ccc
*/
如果我们调整一下代码的书写顺序,那代码的运行顺序也会改变。
代码示例:
System.out.println("ccc");
System.out.println("bbb");
System.out.println("aaa");
/*运行结果:
ccc
bbb
aaa
*/
tip:顺序结构是最简单的算法结构。
二,分支结构(选择结构)
⚙ 程序在运行过程中,根据不同的条件执行不同的语句。
✨if 语句
①单选择结构:
if(布尔表达式){
语句块;
}
图示:
执行过程:判断是否满足条件,若满足执行语句。
代码示例:判定一个数字是奇数还是偶数
public static void main(String[] args) {
//判定一个数字是奇数还是偶数
int a = 6;
if(a % 2 == 0) {
System.out.println(a+" 是偶数");
}
}
// 运行结果:6 是偶数
②双选择结构:
if(布尔表达式){
语句一;
} else {
语句二;
}
图示:
执行过程:判断是否满足条件,满足执行语句一,不满足执行语句二。
代码示例:判定一个数字是奇数还是偶数,并输出结果
public static void main(String[] args) {
//判定一个数字是奇数还是偶数
int a = 5;
if(a % 2 == 0) {
System.out.println(a+" 是偶数");
} else {
System.out.println(a+" 不是偶数");
}
}
//运行结果:5 不是偶数
③多选择结构:
if(条件表达式1) {
语句一;
} else if(条件表达式2) {
语句二;
} else if{
语句三;
}
图示:
执行过程:判断如果条件1成立,执行语句一,条件2成立,执行语句二,条件3成立执行语句三。
代码示例:判断一个数是正数,负数或者是0并输出结果
public static void main(String[] args) {
//判断一个数是正数,负数或者是0并输出结果
int a = 10;
if(a > 0) {
System.out.println(a+" 是正数");
} else if(a < 0) {
System.out.println(a+" 是负数");
} else if(a == 0) {
System.out.println(a+" 是0");
}
}
//运行结果:10 是正数
tip:条件判断存在多个备选情况。
✨switch语句
switch条件语句是一个很常用的选择语句,和if 条件语句不同,它只能针对某个表达式的值做出判断从而决定程序执行哪一个代码,效率比if多选择结构要高。
基本语法:
switch (表达式) {
case1:
语句一;
break;
case2:
语句二;
break;
case3:
语句三;
break;
default://当所有条件都不满足时
语句四;
(break;)
}
执行过程:先计算表达式的值,和执行对应case下的语句,直到break结束,当表达式的值没有 与之对应的case相匹配时,执行default。
tip: default选项可以不写,不是必须放在最后一个(建议放在最后),default可以不写break。
代码示例:轮值表
public static void main(String[] args) {
//轮值表
int a = 5;
switch(a) {
case 1:
System.out.println("星期一:大王值日");
break;
case 2:
System.out.println("星期二:小王值日");
break;
case 3:
System.out.println("星期三:小彭值日");
break;
case 4:
System.out.println("星期四:小杨值日");
break;
case 5:
System.out.println("星期五:小樊值日");
break;
case 6:
case 7:
System.out.println("星期天:小高值日");
break;
default:
System.out.println("输入错误");
}
}
//运行结果:星期五:小樊值日
🔑注意:
1,多个case后的常量值不可以重复。
2,不能做switch的参数的数据类型:long,float,double,boolean。
3,switch的括号内只能是以下类型的表达式:
- 基本类型:byte,int ,short,char
- 引用类型:String常量串,枚举类型。
4,switch语句要和break配合,否则在满足条件后,将该条件下的其他条件语句一起顺序输出,直到遇到break或者 “}” 停止。
5,switch 不能表达复杂的条件。
三,循环结构
⚙循环结构指在满足循环条件情况下,一直执行,直到不满足为止
✨while循环:
基本语法:
循环变量声明:
while(循环条件){
循环语句;
循环变量改变;
}
执行过程:当循环条件为真的时候,执行循环语句,否则跳出循环。
tip:循环条件只能是布尔表达式。
代码示例:输出从1到10的数字
public static void main(String[] args) {
//输出从1到10的数字
int a = 1; //声明循环变量
while(a <= 10) {
System.out.print(a+" ");
a++; //循环变量改变
}
}
//运行结果:1 2 3 4 5 6 7 8 9 10
小结:
- 大多数情况下会设置一个不会死循环的循环条件。
- 只要循环条件是true,循环将一直执行下去,只有少数情况下需要一直执行。
- 在正常编程中,应该尽量避免死循环,会影响程序性能或者造成程序卡死奔溃。
✨do-while循环
基本语法:
循环变量声明;
do {
循环语句;
循环条件改变;
} while (循环条件);
执行过程:先执行一次循环语句,在判定循环条件,条件成立继续执行,否则循环结束。
代码示例:输出1到10的数字
public static void main(String[] args) {
//输出1到10的数字
int a = 1;
do {
System.out.print(a+" ");
a++;
} while (a <= 10);
}
//运行结果:1 2 3 4 5 6 7 8 9 10
tip:do-while循环和while循环相似,不同的是do-while循环至少执行一次。
✨for循环
基本语法:
for(表达式一,表达式二,表达式三 {
循环体;
}
执行过程:先执行表达式一,且只执行一次,然后判断表达式二是否为真,然后再循环体,最后执行表达式三,一直循环,直到表达式为假的时候。
小结:
- 表达式一代表循环变量声明
- 表达式二代表循环条件
- 表达式三代表循环变量改变
代码示例:输出乘法口诀表
public static void main(String[] args) {
//输出乘法口诀表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println();
}
}
运行结果:
tip:在Java5中引入了一种主要用于数组或集合的增强型for循环。
增强型for循环基本语法:
for(声明语句 : 表达式){
// 代码句子
}
- 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
- 表达式:表达式是要访问的数组名,或者返回值为数组的方法。
代码示例:
public static void main(String[] args) {
int[] array = new int[]{1,2,3,4,5};
for (int a:array) {
System.out.println(a);
}
}
//运行结果:1,2,3,4,5
✨跳出循环和结束循环
在循环过程中,如果想结束或者跳出循环可以使用break关键字或者continue关键字。
break:
- break 在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
continue:
- continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
四,输入输出
✨使用Scanner类进行输入
首先需要先定义一个可以在控制台从键盘接受数据的Scanner对象(Scanner类的包名是 java.util.Scanner)
Scanner in = new Scanner(System.in); // 用于控制台从键盘读入数据
Scanner类中主要使用的是next( ) 与 nextLine( )
🔸next( )
- 一定要读取到有效字符后才可以结束输入。
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next()不能得到带有空格的字符串。
代码示例:
import java.util.Scanner;
public class Test{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String ch = input.next();
System.out.println(ch);
}
}
//输入:abc aaa
运行结果:
🔸nextLine()
- 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
- 可以获取到空白。
代码示例:
import java.util.Scanner;
public class Test{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String ch = input.nextline();
System.out.println(ch);
}
}
//输入:abc aaa
运算结果:
其他类型整数的输入
import java.util.Scanner;
public class Test{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int n=input.nextInt();// 整数的输入
char ch=input.next().charAt(0);// 字符的输入
double a=input.nextDouble();// 浮点型的输入
float y=input.nextFloat();
}
}
✨输出:
基本语法:
System.out.println()
// println() 中传递任意数据类型,多个类型使用 “+” 拼接,输出内容后自带换行符。
System.out.print()
// print() 中任意数据类型,多个类型使用 “+” 拼接。
System.out.printf()
// 和c语言一样的格式化输出。
常用的格式化字符:
代码示例:
public static void main(String[] args) {
int a = 10;
System.out.println("abc"); // 输出一个字符串, 带换行
System.out.print("abc"); // 输出一个字符串, 不带换行
System.out.printf("%d",a); // 格式化输出
}
总结:
通过上述,我们了解了在Java编程中,逻辑控制是一个基本方面,它使程序员能够根据某些条件做出决策。Java中有三种类型的逻辑控制结构,每种类型的逻辑控制结构都有不同的要求,并用于不同的场景。Java提供的逻辑控制结构,可用于做出决策和重复代码块。使用哪种结构取决于程序的具体要求和需要实现的逻辑类型。
✨由衷感谢您的阅读,写作是一项漫长而不易的艰辛过程,若能得到您的点赞、评论和关注,作者会由衷感到欣喜。✨