iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >一篇文章带你了解JAVA结构化编程详情
  • 588
分享到

一篇文章带你了解JAVA结构化编程详情

2024-04-02 19:04:59 588人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录1.什么是结构化编程2.为什么要使用结构化编程?3.三大结构A. 循环结构一行代码:B. 分支结构C.重复结构4.函数(在JAVA中叫方法)总结1.什么是结构化编程 编

1.什么是结构化编程

编程中只使用三大结构

不能使用Goto语句

1972年美国科学家,发表论文证明所有的程序流程,只需要三大结构完成。

2.为什么要使用结构化编程?

把代码分成一个一个的代码块

极大的提高了代码的可 读性

3.三大结构

A. 循环结构

  • 线程(一个执行序列)
  • 代码总是执行上一行,再执行下一行
  • 在顺序结构中,要提防不小心产生的空语句

//空语句实例:
public class BanchTest {
    public static void main(String[] args) {
        int i;
        for(i=0;i<5;i++);//这里的分号产生了空语句
        {   
        System.out.print(i);
        }
    }
}
//运行结果为:
//5
//正确例子:
public class BanchTest {
    public static void main(String[] args) {
        int i;
        for(i=0;i<5;i++)//注意这里没分号
        {
            System.out.print(i);
        }
    }
}
//运行结果
//01234

一行代码:

  • 在JAVA中分号是行的分隔符。
  • 在J S语言中分号、回车都是行的分隔符
  • 在VB语言中,回车是分隔符

注释:只要回车是分隔符、都需要右续行符

B. 分支结构

  • 单分支结构(if)

package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
        int age = 19;
        if(age>=18) {//注意这里的判断题的大括号不要省略,除非执行体和判别式在同一行
            System.out.println("成年");
        }
    }
}
  • 双分支结构(if...else..)

package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
        int age = 1;
        if(age>=18) {//符合判别表达式执行体
            System.out.println("成年");
        }else {//不复合判别表达式执行体
            System.out.println("未成年");
        }
    }
}
  • 多分支结构

a.多选一的结构(多个分支结构、只有一个被执行)

使用else if 比单分支满足条件的做法,有更高的效率,所有的分支,同时只会执行一个


package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
        int age = 37;
        if(age<6) {
            System.out.println("幼儿");
        }
        else if(age<18) {
            System.out.println("少年");
        }
        else if(age<60) {
            System.out.println("成年");
        }
        else {
            System.out.println("老年人");
        }
    }
}

b.多选多的结构 (多个分支结构、有多个被同时执行)(switch)

  • 格式:switch(key) 其中key支持的类型有:

1. int类型

2.可以自动升级为int的类型(byte、short、char、Integer)

3. enum(枚举类型)

4.在jdk8之后还支持string类型

  • 在没有break时会全部被执行

package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
        int key=1;
        switch(key) {
        case 1:
            //这个条件下执行的部分
            System.out.println("成绩优秀");
        case 2:
            System.out.println("成绩良好");
        case 3:
            System.out.println("成绩一般");
        default:
            //default等同于else,在switch中用default
            System.out.println("成绩不良");
        }
    }


package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
        int key=2;
        switch(key) {
        case 1:
            //这个条件下执行的部分
            System.out.println("成绩优秀");
        case 2:
            System.out.println("成绩良好");
        case 3:
            System.out.println("成绩一般");
        default:
            //default等同于else,在switch中用default
            System.out.println("成绩不良");
        }
    }
}

  • 在break之后,选中哪个就执行哪个(有多选一的效果)

package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
        int key=1;
        switch(key) {
        case 1:
            //这个条件下执行的部分
            System.out.println("成绩优秀");
            break;//关闭
        case 2:
            System.out.println("成绩良好");
            break;
        case 3:
            System.out.println("成绩一般");
            break;
        default:
            //default等同于else,在switch中用default
            System.out.println("成绩不良");
        }
    }
}
  • 跑穿(没有加break时,可以进入多个分支),只要以上条件都满足时,我都执行

package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
        int key=2;
        switch(key) {
        case 1:
            //这个条件下执行的部分
            System.out.println("成绩优秀");
        case 2:
            System.out.println("成绩良好");
        case 3:
            System.out.println("成绩一般");
        default:
            //default等同于else,在switch中用default
            System.out.println("成绩不良");
            System.out.println("继续加油");//满足上面的四个条件,不管key的值是多少,此代码都执行。
        }
    }
}

注释:设计跑穿就是为了支持多对多的关系。

C.重复结构

  • do while(until)
  • 先执行循环,再判别。

package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
    int i = 0;
    int count=5;
            do {
                System.out.println(i);
                i++;//循环变量自加
            }
            while(i<count);
    }
}
  • while
  • 先判别,再执行循环

package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
    int i = 0;
    int count=5;
            while(i<count) {
                System.out.println(i);
                i++;//循环变量自加
            }
    }
}

注释:while循环要比do..while循环好多了,因为while循环的可读性要比后者好太多。

  • for
  • (continue )跳出本次循环

package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
    int count=5;
    for (int i = 0; i < count; i++) {
        if(i==3)continue;//跳出本次循环,跳到右边距离最近的}的左边
        System.out.print(i);
    }     
    }
}
  • (break)跳出本层循环

package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
    int count=5;
    for (int i = 0; i < count; i++) {
        if(i==3) break;//跳出本次循环,跳到右边距离最近的}的右边
        System.out.print(i);
    }     
    }
}
  • (return) 跳出函数

package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        test1();
    }
    private static void test1() {
    int count=5;
    for (int i = 0; i < count; i++) {
        if(i==3) return;//跳出本函数
        System.out.print(i);
    }     
    }
}
  • forEach(遍历集合)
  • for循环和while循环的区别:
  • for循环。定长循环,依靠固定循环次数作为结束条件。
  • while循环。标志性循环,依靠标志来结束循环(文件是否读到最后一行,用户的输入是否结束)。

4.函数(在JAVA中叫方法)

面向对象的语言叫方法

面向过程的语言叫函数

在JAVA中没有函数这么一说,只有方法一说。实际上方法就是函数,函数就是方法,只是在不同的语言不同的称呼而已。有class声明的就是类。类就是对一类事物的声明,在JAVA中函数就是方法,就是后面带有()的。类只是声明,对象才是真实存在的可以干活的东西,所有的方法(也就是函数)都需要用对象去调用(不包括静态的static)

  • 什么是函数(函数,子程序,过程)

函数是一段可以复用的子程序。

函数(function):有返回值(在C语言中void表示没有返回值)

过程(procedure):无返回值

  • 为什么要使用函数

代码的复用,提高了效率

  • 什么时候写一个函数
  • 复用

在写某个代码时,发现这个代码似曾相识(写过)

  • 分割逻辑

不应该超过50行

一个方法最好只能有一个功能(单一功能原则)

功能简单更加利于复用

  • 函数的定义
    • 函数定义的区域:类体以内,方法以外。
    • 一模一样(同名同参)的函数只能调用一次
    • 方法定义有7个组成要素:

public static void main (String[] args) throws Exception {
​
}

1.权限修饰符 public

2.static/final/abatract

3.返回类型 void

4.方法(函数)名称 main

5.形式参数列表 (String[] args)

6.异常列表 throws Exception

7.{ } 方法体

注释:3 4 5 是必须的


//两个例子
void test1 (){}
abstaract void test1();//抽象方法
  • 函数如何返回返回值
    • 只要函数声明一个不是void返回类型,所有分支必然需要一个返回值。
    • 返回值通过return语句进行返回的,而且数据类型必须和方法声明的返回类型匹配。
  • 函数 的调用
    • 如何调用一个方法

1.可以多次调用


package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        new BanchTest().test1();
}
        void test1 (){
            test2();
            test2();
            test2();
        } 
        void test2() {
            System.out.println("JAVA使我快乐");
        }
    }

2.至少在现在的时候方法(函数)的实参(调用的时候叫实参)和形参(定义的时候叫形参)必须一致


package com.kfm.leiyawen.Test0831;
public class BanchTest {
    public static void main(String[] args) {
        new BanchTest().test1();
}
        void test1 (){
            test2(1);//括号里面的是实参
            test2(2);
            test2(3);
        } 
        void test2(int order) {//函数定义时叫形参
            System.out.println("JAVA使我快乐"+order);
        }
    }

运行结果

  • 函数可以直接或间接的调用自己

递归

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: 一篇文章带你了解JAVA结构化编程详情

本文链接: https://www.lsjlt.com/news/134403.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 一篇文章带你了解JAVA结构化编程详情
    目录1.什么是结构化编程2.为什么要使用结构化编程?3.三大结构A. 循环结构一行代码:B. 分支结构C.重复结构4.函数(在JAVA中叫方法)总结1.什么是结构化编程 编...
    99+
    2024-04-02
  • 一篇文章带你了解C++模板编程详解
    目录模板初阶泛型编程函数模板函数模板概念函数模板格式函数模板的原理函数模板的实例化模板参数的匹配原则类模板类模板的定义格式类模板的实例化总结模板初阶 泛型编程 在计算机程序设计领域...
    99+
    2024-04-02
  • 一篇文章带你入门Java数据结构
    目录1、逻辑结构和物理结构2、顺序结构,链式结构,栈,队列,二叉树二叉树普通二叉树:满二叉树:完全二叉树:平衡二叉树:排序二叉树:二叉树的遍历:总结1、逻辑结构和物理结构 逻辑结构:...
    99+
    2024-04-02
  • 一篇文章带你了解Java Stream流
    目录一、Stream流引入现有一个需求:1.用常规方法解决需求2.用Stream流操作集合,获取流,过滤操作,打印输出二、Stream流的格式三、获取流四、Stream流的常用方法方...
    99+
    2024-04-02
  • 一篇文章带你了解C语言的选择结构
    目录一、if-else语句1.单选择 2.双选择3.多选择二.switch语句总结一、if-else语句 1.单选择 单选择通过if语句就可以实现,if语句的语法及执行流程...
    99+
    2024-04-02
  • 一篇文章带你了解Java SpringBoot Nacos
    目录1、什么是Nacos 1.1与eureka对比1.2与zookeeper对比1.3与springcloud config 对比 2、Spring Cloud Alibaba 套件...
    99+
    2024-04-02
  • 一篇文章带你深入了解Java线程池
    目录线程池模型常用线程池ThreadPoolExecutor构造函数参数说明 线程池默认工作行为ForkJoinPoolFutureTask线程数量分析CPU密集型IO密集...
    99+
    2024-04-02
  • 一篇文章带你了解JavaScript的解构赋值
    目录1. 什么是解构赋值 ?2. 数组的解构赋值2.1) 数组解构赋值的默认值2.2) 数组解构赋值的应用类数组中的应用交换变量的值3. 对象的解构赋值...
    99+
    2024-04-02
  • 一篇文章带你了解Java中ThreadPool线程池
    目录ThreadPool线程池的优势线程池的特点1 线程池的方法(1) newFixedThreadPool(2) newSingleThreadExecutor(3) newSch...
    99+
    2024-04-02
  • 一篇文章带你深入了解Java基础
    目录1、String类1.1两种对象实例化方式1.2字符串比较1.3字符串常量是String的匿名对象1.4String两种实例化方式区别1、分析直接赋值方式2、构造方法赋值1.5字...
    99+
    2024-04-02
  • 一篇文章带你了解Java基础-抽象
    目录Java基础知识(抽象)抽象抽象定义abstract的使用定义抽象类抽象类的一些注意点总结Java基础知识(抽象) 抽象 抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃...
    99+
    2024-04-02
  • 一篇文章带你了解Java基础-多态
    目录Java基础知识(多态)多态多态的定义和存在的必要条件多态的案例多态的弊端引用类型转换总结Java基础知识(多态) 多态 多态就是指程序中定义的引用变量所指向的具体类型和通过该...
    99+
    2024-04-02
  • 一篇文章带你详细了解JavaScript数组
    目录一、数组的作用:二、数组的定义:1.通过构造函数创建数组2.通过字面量的方式创建数组三、数组元素四、数组长度五、数组索引(下标)六、数组注意的问题1.数组中存储的数据可以是不一样...
    99+
    2024-04-02
  • 一篇文章带你深入了解Java异常
    目录一.初识异常1.常见的异常类型<1>除以0<2>数组下标越界<3>访问null对象2.防御式编程<1>LBYL<2>E...
    99+
    2024-04-02
  • 一篇文章带你了解Java SpringMVC返回null
    目录1、回顾一下2、思考一个问题3、springmvc 的处理流程4、使用场景5、总结1、回顾一下 大家有没有注意到,目前讲到的所有 controller 中的方法接收到请求之后,都...
    99+
    2024-04-02
  • 一篇文章带你入门java网络编程
    目录基于TCP/IP协议的通信基于UDP协议的通信InetAddress案例演示 (简易聊天室)UDP 演示总结基于TCP/IP协议的通信 TCP/IP协议 ...
    99+
    2024-04-02
  • 一篇文章带你了解Java基础-接口
    目录Java基础知识(接口)接口接口的定义接口和抽象的区别接口的格式接口中的主要成分接口的案例接口与接口的关系JDK 8之后的接口新增方法总结Java基础知识(接口) 接口 Jav...
    99+
    2024-04-02
  • 一篇文章带你深入了解Java封装
    目录如何实现封装代码展示构造方法注意点:代码展示总结如何实现封装 可以分为两步: 第一步:将类的变量声明为private。 第二步:提供公共set和get方法来修改和获取变量的值。 ...
    99+
    2024-04-02
  • 一篇文章带你了解Java 中序列化与反序列化
    目录一、 序列化和反序列化概念二、 序列化和反序列化的必要性三、 序列化和反序列化的实现1. JDK类库提供的序列化API2. 实现序列化的要求3. 实现Java对象序列化与反序列化...
    99+
    2024-04-02
  • 一篇文章带你了解XGBoost算法
    目录1. 什么是XGBoost1.1 XGBoost树的定义1.2 正则项:树的复杂度1.3 树该怎么长1.4 如何停止树的循环生成2. XGBoost与GBDT有什么不同3. 为什...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作