Java代码结构简述

Java代码结构简述

结构

顺序结构

  • JAVA的基本结构就是顺序结构,除非特意指明,否则就按照顺序,一句一句执行。
  • 顺序结构是最简单的算法结构
    顺序结构
  • 语句与语句之间,框与框之间按照从上到下的顺序执行,它是任何算法都离不开的基本算法结构

选择结构

  • if单选择结构
  • if双选择结构
  • if多选择结构
  • 嵌套的if结构
  • switch多选择结构

if选择结构

if单选择结构

很多时候需要判断一个东西是否可行,然后才去执行,这样一个判断在程序中用if语句来表示。
语法:
if
结构

  • equals(比较字符):判断字符串是否相等
    这是举例说明if单选择的例图,就是看是否和输入的字符串相同
    代码如下:
import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入内容:");
        String s = scanner.nextLine();
        if (s.equals("hello")){
            System.out.println(s);
        }
        System.out.println("End");
        scanner.close();
    }
}

示意图1
例图2

if双选择结构

语法:
语法
结构
假如我要判断某个人考了多少分,算及格还是不及格,可以写如下一串代码:

import java.util.Scanner;

public class IfDemo02 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入成绩:");
        int score = scanner.nextInt();
        if(score>=60){
            System.out.println("及格");
        }else{
            System.out.println("不及格");
        }
        scanner.close();
    }
}

例图:
例图
这就是if双选择结构,true有一个结果,false也有一个结果。

if多选择结构

语法:
语法
F=false,T=true
结构
else if在if和else中间承接。
举例如下,依旧是上一个例子,不过对细节进行了细化。
例图3
但是分数假如是小数,使用int会报错,因此改为double或float
例图4

嵌套的if结构

  • 使用嵌套的if……else语句是合法的。也就是说可以在if或else if中使用if或else if语句,可以像if语句一样嵌套else if……else。
  • 语法:
    语法4

switch多选择结构

  • 多选择结构除了if和嵌套if之外的另一种实现方式就是switch case语句。
  • switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
    语法:
    语法5
  • switch中的变量类型及注意事项:
    • 变量就是byte、short、int、char等八大基本类型
    • 从Java SE 7开始,switch支持字符串String类型的变量
    • 同时case标签必须为字符串常量或字面量
      case 穿透
      switch 匹配一个具体的值
      break 可选,停止循环
      default 就是在上面的case中找不到传入的值,会默认执行的语句

基本类型的展示

写完一个case后如果并不想它都出现在所有情况下后面要加上break将它们分割开,需要穿透叠加操作时就可以不写break。
比方说我这里选定的是C,却同时输出了C与D,但是没有输出E,因为break将E隔开了。
例图5

字符串的展示

这里我就将字符串与default的功能展示了出来
例图6

题外话

class 字节码文件
class文件没法儿直接看懂,可以使用开发工具进行反编译,比方说idea

  1. 首先如何查看已写的代码生成的class文件呢?
    可以在idea社区版右上角的设置里打开项目结构,就能看到输出文件夹的位置
    项目结构位置
    输出文件夹
  2. 将文件夹打开,找到自己想要进行反编译的class文件
    文件夹
  3. 随后打开代码行的文件夹,将想要反编译的class文件拖进去,就能看到想要反编译的class文件的代码内容了
    文件夹
    反编译结果
  4. 也可以通过直接将class文件拖入idea实现上述操作

循环结构

  • while循环
  • do while循环
  • for循环
  • 主要用于数组的增强型for循环

while循环

while是最基本的循环,语法为:
语法6

  • 只要布尔表达式为true,循环就会一直执行下去
  • 大多数情况会让循环停止,需要一个让表达式失效的方式来结束循环
  • 少部分情况需要循环一直执行,比如服务器的请求响应监听等
  • 循环条件一直为true就会造成无限循环(死循环),正常的编程中应该尽量避免死循环。死循环会影响程序性能或造成程序卡死崩溃!
    接下来进行一个输出1~100的循环:
public class WhileDemo01 {
    public static void main(String[] args) {
        //输出1~100
        int i=0;
        while (i<100){
            i++;
            System.out.println(i);
        }
    }
}

我这里给了i<100的限制,因此i到了99就会停止执行,输出结果为100
例图7
死循环就是没有进行限定的,这样的格式:
死循环
加法的运算:
例图8

do while循环

  • 对于while语句而言,如果不满足条件则不会进入循环。do…while循环和while循环类似,不同的是,do…while至少会执行一次。
    语法:
    do...while
  • while是先判断后执行,do…while是先执行后判断。
    刚刚那个1+2+3+…+100=?的例子同样也能用do…while执行,并且执行结果没有区别。
    例子9
    但是当我进行这样一串代码后就能明显看出两者的差别:
public class DoWhileDemo02 {
    public static void main(String[] args) {
        int a=0;
        while (a<0){
            System.out.println(a);
            a++;
        }
        System.out.println("=================");
        do {
            System.out.println(a);
            a++;
        }while (a<0);
    }
}

中间的“=”是我用来做分割的文本。
例图10
很显然,“=”前为空,表示了while并没有执行输出a这个行为,而do…while执行了一次,因此输出了基础赋予的0的值,但因为没有满足条件,没有输出接下来的a++给予的赋值。

for循环

  • 虽然所有循环都可以用while,do…while循环来表示,但java中还有一种语句:for循环——使一些循环结构变得更加简单
  • for循环语句是支持迭代的一种通用循环结构,是最有效最灵活的循环结构
  • for循环的执行次数是在执行前就确定的,语法格式如下:
    语法7
    虽然和while循环一样需要初始化,条件判断与迭代,但是for循环的整体结构更为直观,对比如下:
    对比
    关于for循环的说明:
  1. 最先执行初始化步骤,可以声明一种类型,可初始化一个或多个循环控制变量,也可以是空语句。
  2. 检测布尔表达式的值,如果为true,循环体被执行,如果为false,循环终止,开始执行后续语句。
  3. 执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)。
  4. 再次检测布尔表达式,循环执行上面的过程。
    这个代码即为for循环的死循环,无初始值,无条件判断与迭代:
for ( ; ; ){
}

for循环的展示

println输出完会换行,print输出完不会换行!!!
假如我要用for循环输出1~1000之内能被5整除的数,并且每行输出3个,就可以这样输入:
换行

嵌套for循环的展示

输出九九乘法表:

public class ForDemo04 {
    public static void main(String[] args) {
        for (int j = 1; j <= 9; j++) {
            for (int i = 1; i <= j; i++) {//i<=9会有重复输出,因此这里i<=j去掉重复的输出
                System.out.print(j+"*"+i+"="+(j*i)+"	");//用	进一格
            }
            System.out.println();//System.out.print("
")换行
        }
    }
}

九九乘法表

增强for循环

增强for循环的语法:
语法

  • 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
  • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
    如下这串代码,上面的是普通for循环,下面的是增强for循环,实现的操作是一样的,都是将数组中的每个值都输出一遍。

    • for循环:numbers[i]中i是次数,从numbers数组中取值的次数,就是取值了5次numbers中的数值
    • 增强for循环:直接将数组的值赋予x
    • 本质一样,但是增强for更加简化
public class ForDemo05 {
    public static void main(String[] args) {
        int[]numbers={10,20,30,40,50};//定义数组
        for (int i = 0; i < 5; i++) {
            System.out.println(numbers[i]);
        }
        System.out.println("===================");
        for (int x:numbers){//遍历数组元素
            System.out.println(x);
        }
    }
}

输出结果如下:
结果

goto关键字

  • 关于goto关键字:
    • goto关键字很早就在程序设计语言中出现。尽管goto仍然是java的一个保留字,但并未在语言中正式使用,java没有goto。然而,在break和continue这两个关键字的身上,仍然能看出一些goto的影子——带标签的break和continue。
    • “标签”是指后面跟一个冒号的标识符,例如: label:
    • 对java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。
      标签
  • break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
    break
  • continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
    continue
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » Java代码结构简述