day08_数组

news2024/11/17 7:27:20

今日内容

零、 复习昨日
一、作业
二、数组

零、 复习昨日

方法/函数是什么?

  • 方法就是完成某个功能的一段代码的集合
  • 例如: 方法是 做饭

方法的作用是什么?

  • 封装的思想
  • 方便维护
  • 方便复用

方法的参数列表是什么意思?

  • 参数:方法执行所需的数据
  • 参数列表: 方法执行可以需要多个数据
  • 例如: 做饭(材料)
    吃饭(饭)
    add(int a,int b)

方法的返回值什么意思?

  • 返回值: 就是方法执行后返回的数据
  • 返回值理解为办事后的反馈
  • int r = add(1,2);

为什么要返回数据?

  • 方法执行后返回的数据,程序还要继续使用

方法的返回值返回给谁?

  • 返回给调用该方法的方法

制作零件的程序:
1 给其原材料,融化,返回熔浆
2 获得熔浆,将其锻造成小块,返回小铁块
3 获得小铁块,钻孔,返回带孔铁块
4 获得带孔铁块,造螺纹,返回螺丝帽

一、作业

package com.qf.homework;

import com.sun.xml.internal.bind.v2.model.core.ID;

/**
 * --- 天道酬勤 ---
 *
 * @author QiuShiju
 * @desc
 */
public class Homework2 {

    //写一个函数,计算从1到某个数以内所有能被3或者17整除的数的和。
    public static void printSum(int n) {
        int sum = 0;
        for (int i = 1; i <= n; i++) {
            if (i % 3 == 0 || i % 17 == 0) {
                System.out.print(i+" ");
                sum += i;
            }
        }
        System.out.println("\r\n"+sum );
    }

    // 写一个方法将一个整数逆序打印
    // 		int a = 3456;
    // 		输出:6543
    public static void printNum(int n) {
        while(n != 0){
            int num = n % 10;
            System.out.print(num );
            n /= 10;
        }
    }


    //传入两个数字,计算他们的次幂,将结果返回
    //      例如:(2,3)    2^3 = 2*2*2
    //           (3,4)    3^4=3*3*3*3
    // 不考虑其他情况: 例如 负数次幂,小数次幂
    public static int cimi(int di,int mi) {
        int ji = 1;
        for (int i = 1;i <= mi;i++) {
            ji *= di;
        }
        return ji;
    }
    public static void main(String[] args) {
        // printSum(17);
        //printNum(-3456);
        // System.out.println(10 % 3 ); // 1
        // System.out.println(10 % -3 );// 1
        // System.out.println(-10 % 3 );// -1
        // System.out.println(-10 % -3 );// -1

        //System.out.println(cimi(3,3) );

    }

}

二、方法递归调用

    public static int jieche2(int n) {
        if (n == 1) {
            return 1;
        }
        return n * jieche2(n-1);
    }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MKW4UUt1-1681085108225)(https://qiushiju-tuchuang.oss-cn-hangzhou.aliyuncs.com/image/%E9%98%B6%E4%B9%981.png)]

总结: 需要掌握的是方法调用的过程,以及返回值返回的过程

另外: 熟悉内存结构

三、return

return作用:

  • 结束方法
  • 结束方法并返回数据
    // 作用2结束方法并返回数据
    public static int add(int a,int b) {
        return a+b;
        // return后的代码不执行
        // System.out.println("xxxx" );
    }

    // 作用1: 结束方法
    public static void show() {
        // System.out.println(111 );
        // return;
        for (int i = 1; i < 10; i++) {
            if (i == 5) {
                //break; // 结束当前循环,for后的代码还能执行
                return; // 结束当前方法,后面的代码不再执行
            }
        }
        System.out.println("for后" );
    }

当方法返回值类型不是void,即有返回值类型,即方法执行完需要使用return返回数据,以下代码就不正确

    public static int show2(){
        if (1 > 0) {
            return 1;
        }
        // 此处报错!!!!!,原因缺失return语句
    }

只要程序中出现if,for,while等需要判断的语法,无论是否是恒成立,都不行.

语法上认为只要是判断,就有可能不成立!! 不成立,就有可能执行不到return 代码,那么上方的代码就会认为缺失return.


总结: 有返回值的方法要有一个100%能执行到return语句!!!

四、数组

4.1 为什么数组?

现在,存储1个人的年龄, int age = 18;

那么,存储30个人的年龄?int age1 = 18;int age2 = 19;。。。有点麻烦!

那么,有没有一种数据类型可以存储多个数据? --> 数组

4.2 什么是数组?

数组: 一组数据的集合,可以存储存储多个数据.


数组的特点:

  • 数组一旦创建,长度/容量固定
  • 同一个数组,只能存储同一种类型的数据

4.3 如何使用数组?

数组的使用步骤: 1声明数组 2创建数组 3使用数组

4.3.1 声明数组

数据类型[] 数组名;

        // 声明:向jvm内存申请一块空间,
        //      空间的类型是int[],空间的名字是arr1
        // 数据类型[] 数组名;
        int[] arr1;
        double[] arr2;
        String[] arr3;

        // 其他声明方式,不建议使用
        int arr4[];
    

4.3.2 创建方式1

数组名 = new 数据类型[长度];

        // 创建数组
        // 数组名 = new 数据类型[长度];
        arr1 = new int[3];
        arr2 = new double[3];
        arr3 = new String[3];
        // 同时声明并创建数组
        int[] arr5 = new int[3];

4.3.3 使用数组

使用数组无非就是两件事

  • 数组元素取值
    • 数据类型 变量名 = 数组名[下标];
    • 下标从0开始,最大到长度-1
  • 数组元素赋值
    • 数组名[下标] = 值;
        // 数组取值
        // 数据类型 变量名 = 数组名[下标];
        int a1 = arr5[0];
        int a2 = arr5[1];
        int a3 = arr5[2];
        // int a4 = arr5[3];
        // 下标从0开始,最大数组长度-1,如果超出就会报错
        // ArrayIndexOutOfBoundsException(数组下标越界异常)
        System.out.println(a1 );// 0
        System.out.println(a2 );// 0
        System.out.println(a3 );// 0
        // 赋值
        // 数组名[下标] = 值;
        arr5[0] = 1;
        arr5[1] = 2;
        arr5[2] = 3;

        int a11 = arr5[0];
        int a12 = arr5[1];
        int a13 = arr5[2];
        System.out.println(a11 );
        System.out.println(a12 );
        System.out.println(a13 );
// 总结
int[] arr = new int[3];// 声明创建
int[] arr2 = new int[]{1,2,3,4};
int[] arr3 = {11,22,33};
int a = arr[0];        // 取出数组第一个下标处的值赋值给a=0
arr[0] = 1;            // 给数组的第一个下标处赋值1
int a2 = arr[0];       // 再次取出值赋值给变量,a2就是1

// 练习: 声明创建取值赋值,double数组,int数组,String数组

4.4 数组的内存原理

image-20230405161531182

package com.qf.array;

/**
 * --- 天道酬勤 ---
 *
 * @author QiuShiju
 * @desc 数组的原理
 */
public class Demo3 {

    public static void main(String[] args) {
        /**
         * ps: 数组中的存储的数据称为元素
         *
         * 声明数组,向内存申请一块空间存储数据
         * 创建数组,在堆内存中开辟连续空间
         * 且同时会给数组元素赋初始值
         * 且会根据长度分配下标
         * 且该空间在内存有地址值
         * 最后,将地址值赋值给了数组名
         */
        int[] arr = new int[3];
        // [I@1540e19d
        // [ 一维数组,I integer的首字母,@地址值分隔符无意义
        // 1540e19d 就是数组在内存的值

        System.out.println(arr );

        // 取值
        int a = arr[0];
        System.out.println(a );

        // 赋值
        arr[0] = 1;

        // 再取值
        System.out.println(arr[0] );

        arr[1] = 2;
        System.out.println(arr[1] );
    }
}

4.5 练习

package com.qf.array;

/**
 * --- 天道酬勤 ---
 *
 * @author QiuShiju
 * @desc 练习
 */
public class Demo4 {

    public static void main(String[] args) {
        double[] dArr = new double[3];
        System.out.println(dArr[0] );// double类型初始值0.0
        System.out.println(dArr[1] );
        System.out.println(dArr[2] );

        dArr[0] = 1.1;
        dArr[1] = 2.2;
        dArr[2] = 3.3;
        System.out.println(dArr[0] );
        System.out.println(dArr[1] );
        System.out.println(dArr[2] );

        String[] sArr = new String[3];
        System.out.println(sArr[0] );// 引用类型的默认初始值null
        System.out.println(sArr[1] );
        System.out.println(sArr[2] );
        sArr[0] = "a";
        sArr[1] = "b";
        sArr[2] = "c";
        System.out.println(sArr[0] );
        System.out.println(sArr[1] );
        System.out.println(sArr[2] );
    }
}

4.6 创建数组的简化格式-静态创建

五、数组应用

5.1 数组遍历

遍历: 获得数组的每个元素.

    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6,7,8,9,10};
        // 数组有个属性,叫length,通过这个属性获得数组的长度
        int length = arr.length;
        System.out.println(length );

        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i] );
        }
    }

创建数组的简化格式-静态创建

五、数组应用

5.1 数组遍历

遍历: 获得数组的每个元素.

    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6,7,8,9,10};
        // 数组有个属性,叫length,通过这个属性获得数组的长度
        int length = arr.length;
        System.out.println(length );

        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i] );
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/419782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下C/C++ SNTP网络时间协议实现

对于许多应用程序&#xff0c;特别是在小型计算机和微控制器上&#xff0c;不需要NTP的最终性能。便开发了简单网络时间协议&#xff08;SNTP&#xff09;&#xff0c;为功能较弱的计算机提供时钟同步&#xff0c;而这些计算机不需要NTP的复杂性。 而简单网络时间协议&#xf…

简易糖尿病胰岛素注射量推荐系统运行记录(github项目)

前言 在github上找案例推理相关实现代码&#xff0c;找到这个项目&#xff0c;记录一下运行过程。项目地址&#xff1a;https://github.com/jcf-junior/Diabetes-CBR 运行记录 运行项目的前提是已经装好的所有request的包&#xff0c;电脑里已经安装过mongodb数据库。 原项目…

Linux XFS文件系统的备份与还原

文章目录Linux XFS文件系统的备份与还原XFS文件系统备份xfsdump语法xfsdump备份完整的文件系统用xfsdump进行增量备份XFS文件系统还原xfsrestore语法用xfsrestore观察和xfsdump后的备份数据内容简单恢复level 0 的文件系统恢复增量备份数据仅还原部分文件到xfsrestore交互模式L…

深入剖析Android视图层次结构,为什么UI界面如此多样化?

简述 在Android Framework中&#xff0c;渲染机制是指如何为应用程序的用户界面绘制和布局视图&#xff08;View&#xff09;。Android的视图层次结构&#xff08;View Hierarchy&#xff09;是由视图树中的每个节点表示的 。当更新视图树时&#xff0c;Android会执行以下流程…

记一次内存泄漏问题的排查

阶段一&#xff1a; 前段时间&#xff0c;突然发现服务在毫无征兆的情况下发生了重启。去看了一下容器退出的日志&#xff0c;发现内存利用率超过了100%&#xff0c;导致容器重启&#xff0c;进一步看了skyWalking&#xff0c;发现heap内存超了&#xff0c;当时只是简单的以为是…

HTML2.1列表标签

列表标签种类 无序列表 有序列表 自定义列表 使用场景&#xff1a;在列表中按照行展示关联性内容。 特点&#xff1a;按照行的形式&#xff0c;整齐显示内容。 一、无序列表 标签名说明ul无序列表整体&#xff0c;用于包裹li标签li表示无序列表的每一项&#xff0c;用于包…

【iOS】—— 消息传递和消息转发

消息传递和消息转发 文章目录消息传递和消息转发消息传递&#xff08;方法调用&#xff09;IMP指针IMP与SEL的区别与联系SEL是通过表取对应关系的IMP&#xff0c;进行方法的调用快速查找imp过程汇编代码查找过程总结消息发送快速查找imp(汇编):方法缓存慢速查找总结慢速查找消息…

全链路日志追踪

背景 最近线上的日志全局追踪 traceId 不好使了&#xff0c;不同请求经常出现重复的 traceId&#xff0c;或者通过某个请求的 traceId 追踪搜索&#xff0c;检索出了与该请求完全不相干的日志。我领导叫我去排查解决这个问题&#xff0c;这里我把我排查的过程思路以及如何解决…

真题详解(单元测试)-软件设计(五十)

真题详解(0/1背包)-软件设计&#xff08;四十九)https://blog.csdn.net/ke1ying/article/details/130163955 单元测试 五个特征&#xff1a;模块接口、局部数据结构、重要执行路径、出错处理、边界条件。 模块接口&#xff0c;保证测试模块数据流正确的流入和流出。 测试模块用…

大数据相关知识

1、大数据整体简介 1、1 简介 百度百科这样写道 大数据&#xff08;big data&#xff09;&#xff0c;IT行业术语&#xff0c;是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;是需要新处理模式才能具有更强的决策力、洞察发现力和流程优…

C++类的学习1

类的定义一般包括两部分&#xff0c;一是类的属性&#xff0c;二是他所拥有的方法。类的实例化是指给类的加载并初始化过程&#xff0c;比如一个people类&#xff0c;我们具体到每一个人就是类的实例化&#xff0c;此外一个类可以在此类上进行扩展。比如people类&#xff0c;我…

vue项目使用luckyexcel预览excel表格

场景 最近工作中在开发文档上传并能在新窗口打开预览的功能。在此记录下心路历程。 方法 我总共尝试了2种方法预览excel&#xff0c;均可实现。还发现一种方法可以实现&#xff0c;需要后端配合&#xff0c;叫做KKfileview。 1.使用luckyexcel插件实现xlsx的预览 2.使用fi…

组合式升降压PFC的分析方法

1. 组合式升降压PFC的基本原理 组合式升降压PFC采用两组储能元件&#xff0c;基本单元为Cuk&#xff0c;Sepic和Zeta。参考论文《New Efficient Bridgeless Cuk Rectifiers for PFC Applications》中的三种拓扑进行分析。   Cuk型PFC的TypeI如下图所示&#xff0c;正半周Dp一…

Jef-log-tail日志采集工具使用说明

介绍 jef-log-tail是一款基于netty实现的日志采集工具&#xff0c;支持指定目录、指定文件、指定后缀的动态持续日志采集&#xff0c;日常使用场景如&#xff1a;集群部署后将多台主机的日志集中存放到一台日志服务器上&#xff0c;或者将日志统一输出到数据库、redis、kafka、…

STM32实战项目-温湿度传感器

程序功能&#xff1a; 1、软件模拟I2C协议与SHT30数字温湿度传感器通讯&#xff1b; 2、数码管显示环境温湿度&#xff1b; 3、串口打印环境温湿度。 目录 一、硬件电路 二、技术讲解 2.1IIC简介 2.2 IIC总线协议 2.2设备接入 三、SHT30数字温湿度传感器 3.1性能介绍 …

Rollup 实践:插件生态和实用技巧(续)

在前面的文章中&#xff0c;我们已经了解了 Rollup 的性能优化和高级用法。本篇文章将继续探讨 Rollup 的插件生态和实用技巧。 插件生态 Rollup 拥有一个丰富的插件生态&#xff0c;下面我们介绍几个实用的插件&#xff1a; rollup-plugin-terser&#xff1a;使用 Terser 压…

FlowForge 使用教程 团队资源管理

前言 本篇文章结合FF的操作来给大家解释一下,FF在团队管理上都与那些资源可以操作。 团队创建 使用超管第一次登录FF平台,默认什么资源都没有,你只能先去创建一个团队才能继续往下操作。 在FF平台上,团队就代表一个租户,也是一种资源隔离的手段。 创建团队可以通过右上…

Rollup 实践:性能优化和高级用法(续)

在前面的文章中&#xff0c;我们已经了解了 Rollup 的基本概念和配置。本篇文章将继续探讨 Rollup 的性能优化和高级用法。 懒加载 通过 Rollup 的代码分割功能&#xff0c;我们可以实现懒加载&#xff0c;从而减小初始页面加载时间。假设我们有一个动态导入的模块 dynamic.j…

vue项目用后端返回的文件流实现docx和pdf文件预览

前端docx和pdf文件预览实现效果图docx-preview文件预览pdf文件预览写这篇文章的目的&#xff0c;是因为我比较懒&#xff0c;想把代码记录一下&#xff0c;方便日后使用&#xff1b;哈哈&#xff0c;如果你也需要&#xff0c;也可以复制粘贴啊&#xff0c;为了方便自己和需要的…

windows10开发环境下部署kafka消息服务

下载kafka&#xff0c;官方地址https://kafka.apache.org/downloads 百度网盘链接&#xff1a;https://pan.baidu.com/s/1h3iXtfzEIBoajGPId5Dcag?pwd0000 提取码&#xff1a;0000直接把下载的文件解压到某个盘的根目录&#xff0c;要不然后面的命令就会遇到“命令行过长”的报…