day04_方法_数组

news2024/11/15 20:03:08

今日内容

  1. 方法
  2. 数组基础

复习

0 if(){
}else{
}

if(){
}else if(){
}else if(){
}else{
}
1 循环的四要素
初始值,控制条件,迭代,循环体

2 迭代什么意思
迭代: 一次次的变化

3 for循环执行流程
(小红旗)
for(int i = 1;i < 11;i++){
}
4 break,continue,return分别什么作用

  • break,打断循环,终止循环
  • continue,继续,暂停这一次循环,继续下一次循环
  • return,结束方法,不是结束程序的,只不过如果结束的main方法,那么程序会结束
    5 自己总结 变量在使用时的注意事项
    (命名,作用域等)
  • 命名要见名知意,同一作用域内不能重名
  • 变量的作用域: 最近的一对{}内

int a = 1;// 声明赋值变量
a = 2; // 可以重复使用
a =3;
int a = 3;// 重复定义

一、方法(method)

1.1 什么是方法

方法(method),其实就是一个函数(function),完成某个功能得到一个结果

直白点: 一段独立的代码,可以执行,执行过程中可以解决一些问题最后获得一个结果

也就是说,方法可以执行代码,用来解决问题


其实我们见过,main方法就是方法

1.2 为什么需要方法

我们已经有主方法,为什么还需要定义其他方法?因为现在写代码有些不方便的地方

  • 现在所有代码都写在main方法内,代码就太多,太复杂 --> 冗余
  • 想改代码时候,发现不好找 --> 不方便维护
  • 代码都在主方法,为了读懂代码需要花很长时间 --> 不方便阅读代码
  • 代码都在主方法内,一运行全部代码都运行 --> 代码之间不独立
  • 代码都在主方法内,变量作用域就是主方法内,变量不能重复,就需要定义好多不同的变量 --> 代码不独立

所以方法好处:

  • 每个方法都是独立代码块,可以单独运行
  • 因为方法是独立,可以单独修改,单独运行,每个方法内变量也不冲突

1.3 怎么定义方法

其实我们见过方法,main方法就是一个

public static void main(String[] args){
    
}
/*
public static 这两个固定写法
void  ,此处是方法要返回的数据的类型
      void 单词是空的意思,该方法执行完没有返回值
main  此处是方法名,
      main单词是主要的意思,这是方法名 ,可以见名知意即可
()  参数列表,其中可以不写东西,叫做空参方法
    如果()内有参数,就做有参方法
    其实参数就是数据类型+变量名
{} 方法体,其中就写执行的代码    
*/

方法写哪? 类中,与其他方法平级,即方法不能嵌套定义,无论上下位

方法如何执行? 方法定义完,必须在main内调用该方法,才能执行

1.4 演示

image-20231012095621600

方法根据返回值和参数列表分为以下几种方法

  • 无参数无返回值
  • 有参数无返回值
  • 无参数有返回值
  • 有参数有返回值

1.4.1 无参无返回值方法

public static void 方法名(){} 这就是无参数无返回值的方法

  • public static 是每个方法固定的
  • void 单词是空, 代表就是方法执行后没有返回值
  • 方法名 随便写,见名知意
  • () 空参

需求: 设计方法,输出1-10

    public static void main(String[] args) {
        // 通过方法名+()调用方法,让其执行
        printOne2Ten();
    }
    // 需求: 设计方法,输出1-10
    public static void printOne2Ten(){
        for (int i = 1; i < 11; i++) {
            System.out.println(i );
        }
    }

需求: 设计方法,算出 一张纸的厚度是0.01mm 折叠多少次,达到珠穆拉玛峰高度(8848000mm)

    public static void main(String[] args) {
        // 通过方法名+()调用方法,让其执行
        zhedie();
    }

    // 需求: 设计方法,算出 一张纸的厚度是0.01mm
    // 折叠多少次,达到珠穆拉玛峰高度(8848000mm)
    public static void zhedie(){
        double houdu = 0.01;
        int count = 0;
        while (houdu <= 8848000) {
            houdu = houdu * 2;
            count++;
        }
        System.out.println("折叠"+count+"次,可以达到"+houdu+",>=珠穆拉玛峰高度(8848000mm)" );
    }
    // ps: 小经验: 当不知道循环次数用while,当已知循环次数,建议使用for

1.4.2 有参数无返回值

public static void 方法名(参数){}

  • public static 固定
  • void 此处是方法返回值,void是空,即不返回
  • 方法名,随便定义
  • () 内就是参数列表
    • 参数,就是变量,写法 数据类型 变量名;
    • 为什么需要参数? 方法设计参数,方法可以根据参数出现不同的效果
    • 方法可以定义多个参数,多个参数之间用逗号,隔开
  • {}

需求: 设计方法输出从1到指定数字

 public static void main(String[] args) {    
		// 调用方法就是方法名+();
        // 如果方法有参数,调用时需要给参数赋值
        printNum(5);// 相当于是5赋值给方法参数a变量
        System.out.println("--------" );
        printNum(10);
    }

    // 需求: 设计方法输出从1到指定数字
    // int a就是参数,其实就是变量,那么方法中就可以使用该变量
    public static void printNum(int a){// a = 5
        for (int i = 1; i <= a; i++) {
            System.out.println(i );
        }
    }

image-20231012112819155

需求: 设计方法,根据指定数量输出吃几碗饭

    public static void main(String[] args) {
        // 调用方法就是方法名+();
        // 如果方法有参数,调用时需要给参数赋值
        eat(4);
    }

    // 设计方法,根据指定数量输出吃几碗饭
    public static void eat(int x){
        System.out.println("吃 "+x+" 碗饭" );
    }

// 设计方法,根据指定 菜名 吃饭

package com.qf.method;

/**
 * |-----------------------------------------------
 * |  ____   _          _____  _      _  _        |
 * | / __ \ (_)        / ____|| |    (_)(_)       |
 * || |  | | _  _   _ | (___  | |__   _  _  _   _ |
 * || |  | || || | | | \___ \ | '_ \ | || || | | ||
 * || |__| || || |_| | ____) || | | || || || |_| ||
 * | \___\_\|_| \__,_||_____/ |_| |_||_|| | \__,_||
 * |                                   _/ |       |
 * |                                  |__/        |
 * |-----------------------------------------------
 * |                 天道酬勤                     |
 * |             代码敲烂 月薪过万                |
 * L----------------------------------------------
 *
 * @desc
 * 变量使用的3大步骤
 * 1 声明(定义) 数据类型 变量名;
 * 2 赋值  变量名 = 值;
 * 3 使用, 输出/运算
 */
public class Demo3 {

    public static void main(String[] args) {
        // 调用方法就是方法名+();
        // 如果方法有参数,调用时需要给参数赋值
        diancai("铁锅炖大鹅");

    }
    // 设计方法,根据指定 菜名 吃饭
    public static void diancai(String food) {
        System.out.println("今天中午吃: <<" + food +">>" );
    }
}

// 老板要让你算公司根据4个季度销售额,算出总销售额

    public static void main(String[] args) {
        // 方法有多个参数,传入参数不能多不能少,要按照个数顺序类型对应
        sell(100.0,200.0,200.0,400.0);
    }
    // 老板要让你算公司根据4个季度销售额,算出总销售额
    public static void sell(double a1,double a2,double a3,double a4){
        double r = a1 + a2 + a3 + a4;
        System.out.println("第一季度销售:" +a1 +"万元" );
        System.out.println("第二季度销售:" +a2 +"万元" );
        System.out.println("第三季度销售:" +a3 +"万元" );
        System.out.println("第四季度销售:" +a4 +"万元" );
        System.out.println("全年总销售额:" + r +"万元");
    }

上面练习完整代码

package com.qf.method;

/*
 * @desc
 * 变量使用的3大步骤
 * 1 声明(定义) 数据类型 变量名;
 * 2 赋值  变量名 = 值;
 * 3 使用, 输出/运算
 */
public class Demo3 {

    public static void main(String[] args) {
        // 调用方法就是方法名+();
        // 如果方法有参数,调用时需要给参数赋值
        printNum(5);// 相当于是5赋值给方法参数a变量
        System.out.println("--------" );
        printNum(10);
        System.out.println("--------" );
        eat(4);
        System.out.println("--------" );
        diancai("锅包肉");
        diancai("铁锅炖大鹅");
        System.out.println("--------" );

        // 方法有多个参数,传入参数不能多不能少,要按照个数顺序类型对应
        sell(100.0,200.0,200.0,400.0);
    }

    // 需求: 设计方法输出从1到指定数字
    // int a就是参数,其实就是变量,那么方法中就可以使用该变量
    public static void printNum(int a){// a = 5
        for (int i = 1; i <= a; i++) {
            System.out.println(i );
        }
    }

    // 设计方法,根据指定数量输出吃几碗饭
    public static void eat(int x){
        System.out.println("吃 "+x+" 碗饭" );
    }

    // 设计方法,根据指定 菜名 吃饭
    public static void diancai(String food) {
        System.out.println("今天中午吃: <<" + food +">>" );
    }

    // 老板要让你算公司根据4个季度销售额,算出总销售额
    public static void sell(double a1,double a2,double a3,double a4){
        double r = a1 + a2 + a3 + a4;
        System.out.println("第一季度销售:" +a1 +"万元" );
        System.out.println("第二季度销售:" +a2 +"万元" );
        System.out.println("第三季度销售:" +a3 +"万元" );
        System.out.println("第四季度销售:" +a4 +"万元" );
        System.out.println("全年总销售额:" + r +"万元");
    }
}

1.4.3 无参有返回值

什么是返回值? 方法执行后返回的数据

为什么需要返回值? 有时候,方法执行后的数据,后续接着被其他代码使用

如何定义返回值?

public static 数据类型 方法名(){
     return;
}
  • public static
  • 第三个地方, 写的是方法的返回值数据类型
    • 之前写void,是因为方法执行完不返回数据
    • 如果方法执行完需要返回数据,此处就写对应数据的类型
  • 第四个地方 方法名
  • {} 方法体
    • 特殊的,只要方法需要返回数据,就必须设置return + 值;

总结/结论:

  • 方法定义时void,代码块里面不能写return+值;
  • 方法定义时写了返回值数据类型,代码块里面就必须写retrun + 值;

需求: 设计一个方法,返回数字

image-20231012145903058

其他类型返回值演示

public class Demo4 {

    public static void main(String[] args) {
        // 调用方法: 方法名+();
        // 如果方法有返回值,就可以在左边使用变量存储返回值
        int a = test();// test方法执行,返回100赋值给变量a
        System.out.println(a );
        System.out.println("----" );

        String b = test2();
        System.out.println(b );

        System.out.println("----" );

        double c = test3();
        System.out.println(c );

        System.out.println("-----" );
        int d = zhedie( );
        System.out.println("折叠次数:" +d );

    }

    // 单纯演示返回值
    public static int test(){
        System.out.println("这是无参有返回值的方法" );
        return 100;// 返回值返回给调用者使用
    }
     
    public static String test2() {
        return "ok";
    }

    public static double test3(){
        return 6.66;
    }

    // 需求: 设计方法,算出 一张纸的厚度是0.01mm
    // 折叠多少次,达到珠穆拉玛峰高度(8848000mm)
    // 返回折叠次数
    public static int zhedie(){
        double houdu = 0.01;
        int count = 0;
        while (houdu <= 8848000) {
            houdu *= 2;
            count++;
        }
        return count;
    }
}

1.4.4 有参数有返回值 【重点】

public static 返回值数据类型 方法名(数据类型 变量名,…) {
return 值;
}

// 设计方法,传入两个数字,返回他们的和(加法运算)

   public static void main(String[] args) {
        // int sum = jia(3, 2);
        // System.out.println(sum );
   }
   // 设计方法,传入两个整数数字,返回他们的和(加法运算)
    public static int jia(int a, int b) {
        return a + b;
    }

// 计算1+2-3+4-5

  // 1+2-3+4-5
  public static void main(String[] args) {
		int r1 = jia(1, 2);// 加法
        int r2 = jian(r1, 3);// 减法
        int r3 = jia(r2, 4);// 加法
        int r4 = jian(r3, 5);// 减法
        System.out.println(r4);
   }
 // 设计方法,传入两个整数数字,返回他们的和(加法运算)
    public static int jia(int a, int b) {
        return a + b;
    }

    // 设计方法,传入两个整数,返回他们的差
    public static int jian(int a, int b) {
        return a - b;
    }

1.5 方法的其他用法

  1. 方法定义完只能由主方法调用运行
  2. 其实方法间相互调用

image-20231012162919589

执行结果

m1()
m2()
m3()

但是不能形成闭环调用!!! 容易造成堆栈内存溢出错误StackOverflowError

image-20231012163342662

方法的返回值不是只能返回给主方法

而是方法的返回值返回给 方法的调用者,即谁调用返回给谁

image-20231012163825296

二、数组(array)

2.1 数组介绍

数据的组合 – > 数组

存储多个数据的 就是 数组!

为什么还需要数组存储数据? 因为一个变量只能存储一个值,假设存储全村人的收入,那就要定义几百变量,太麻烦了…


java数组如何定义?

  1. 数据类型[] 数组名 = new 数据类型[容量];
  2. 数据类型[] 数组名 = new 数据类型[]{值1,值2,值3,…};
  3. 数据类型[] 数组名 = {值1,值2,值3,…}

2.2 数组的定义1

定义方式1

数据类型[] 数组名 = new 数据类型[容量];

 public static void main(String[] args) {
        // 数据类型[] 数组名 = new 数据类型[容量];
        // 创建int型数组,长度是3
        int[] arr1 = new int[3];

        // 创建double型数组,长度是4
        double[] arr2 = new double[4];

        // 创建String数组,长度是3
        String[] arr3 = new String[3];

    }

2.3 把数组中的数据取出来

数据类型 变量 = 数组名[下标];

  • 何为下标? 下标就是索引,其实就是存储数据的一个编号,就好像火车车厢座位的编号
  • 下标都是从0开始的,下标最小是0最大是长度-1

整型数组存储的默认值是 0

浮点型数组存储的默认值是0.0

boolean数组存储的默认值是false

char数组存储的默认值是’ ’

引用类型,例如String存储的默认值是null

public class Demo7 {

    public static void main(String[] args) {
        // 数据类型[] 数组名 = new 数据类型[容量];
        // 创建int型数组,长度是3,默认是空的,存储的是0
        int[] arr1 = new int[3];

        // 从int数组中取出第一个位置的数据
        int a1_1 = arr1[0];
        int a1_2 = arr1[1];// 取出第二个
        int a1_3 = arr1[2];// 取出第三个
        // int a1_4 = arr1[3];// 取出第四个,报错,下标越界
        System.out.println(a1_1 );// 0
        System.out.println(a1_2 );// 0
        System.out.println(a1_3 );// 0

        // 创建double型数组,长度是4,默认存储的是0.0
        double[] arr2 = new double[4];
        // 从double数组中取出数据
        System.out.println(arr2[0] );// 0.0
        System.out.println(arr2[1] );// 0.0
        System.out.println(arr2[2] );// 0.0
        System.out.println(arr2[3] );// 0.0


        // 创建String数组,长度是3,默认存储null
        String[] arr3 = new String[3];
        // 从String数组取出数据
        System.out.println(arr3[0] );// null
        System.out.println(arr3[1] );// null
        System.out.println(arr3[2] );// null
    }
}

2.4 向数组中存储数据

数组名[下标] = 值;

  • 注意下标不要越界
  • 注意存储的值数据类型不要错
  public static void main(String[] args) {
        int[] arr1 = new int[3];// 长度3,默认值[0,0,0]
        // 先取值查看
        System.out.println(arr1[0] );
        System.out.println(arr1[1] );
        System.out.println(arr1[2] );

        // 向数组存储数据
        arr1[0] = 10;
        arr1[1] = 20;
        arr1[2] = 30;

        // 再取出来看看
        System.out.println(arr1[0] );
        System.out.println(arr1[1] );
        System.out.println(arr1[2] );
    }

image-20231012174220197

单词

method 方法

count 计数

required 要求

provided 提供

convert 转换

result 结果

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

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

相关文章

正规的股票杠杆公司排名:安全的五大加杠杆的股票平台排行一览

在股票市场中&#xff0c;利用杠杆效应可以放大投资者的收益。然而&#xff0c;选择一个正规、可靠的杠杆公司至关重要。本篇文章将根据配查信、尚红网、倍悦网、兴盛网、诚利和、嘉正网、广瑞网、富灯网、天创网、恒正网、创通网等媒体提供的信息&#xff0c;分析并整理出正规…

我们用i.MX8M Plus开发了一个人工智能机器人小车,欢迎围观~

i.MX8M Plus的人工智能机器小车功能 AGV 小车是基于 i.MX8M Plus 为主控实现的一款双驱差速小车。从上到下由摄像头、舵机控制板、舵机、i.MX8M Plus 核心板与底板、电池、电机、轮子等组成。 i.MX8M Plus 有以下 5 个职责&#xff1a; 控制小车电机&#xff0c;负责控制小车…

智能洗衣管理系统中的RFID技术应用

一、行业背景 当前&#xff0c;酒店、医院、浴场以及专业洗涤公司面临着大量工作服和布草的交接、洗涤、熨烫、整理和储存等工序&#xff0c;如何有效地跟踪管理每一件布草的洗涤过程、洗涤次数、库存状态和布草归类等成为了一个巨大的挑战&#xff1a; 1、传统的纸面洗涤任务…

CentOS 7 基于C 连接ZooKeeper 客户端

前提条件&#xff1a;CentOS 7 编译ZooKeeper 客户端&#xff0c;请参考&#xff1a;CentOS 7 编译ZooKeeper 客户端 1、Docker 安装ZooKeeper # docker 获取zookeeper 最新版本 docker pull zookeeper# docker 容器包含镜像查看 docker iamges# 准备zookeeper 镜像文件挂载对…

相机噪声评估

当拥有一个相机&#xff0c;并且写了一个降噪的算法&#xff0c;想要测试降噪的应用效果。 相机在光线不足的情况下产生噪点的原因主要与以下几个因素有关&#xff1a; 感光元件的工作原理&#xff1a;相机的图像传感器是由数百万甚至数千万的感光元件&#xff08;如CMOS或CC…

论文研读|Robust Watermarking of Neural Network with Exponential Weighting

目录 论文信息文章简介研究动机查询修改攻击Auto-Encoder训练水印图像检测检测结果 水印图像重构 研究方法水印生成水印嵌入版权验证 实验结果保真度&#xff08;Fidelity&#xff09;有效性&#xff08;Effectiveness&#xff09;&鲁棒性&#xff08;Robustness&#xff0…

Apipost自动化测试

Apipost提供可视化的API自动化测试功能&#xff0c;使用Apipost研发人员可以设计、调试接口&#xff0c;测试人员可以基于同一数据源进行测试&#xff0c;Apipost 接口自动化功能在上次更新中进行了逻辑调整&#xff0c;带来更好的交互操作、更多的控制器选择&#xff0c;同时新…

【数据结构】深入探讨二叉树的遍历和分治思想(一)

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;数据结构 &#x1f525;该文章主要讲述二叉树的递归结构及分治算法的思想。 目录&#xff1a; &#x1f30d;前言&#xff1a;&#x1f30d;…

使用react-router-dom在新标签页打开链接,而不是本页跳转

一般单页面应用&#xff0c;当你使用useNavigate时候的时候&#xff0c;用useNavigate来跳转&#xff0c;只能是在当前页面刷新跳转的&#xff0c;要想单独在一个tab页打开新页面&#xff0c;大概用三种方式。 第一种 使用link标签&#xff0c;配合target实现 <Link to&q…

求臻医学官网焕新升级

嗨&#xff0c;我的朋友们~ 求臻医学官网全面焕新升级了&#xff01; 新官网能否带给您更优质、更便捷的 在线服务体验&#xff1f; 来试试看吧&#xff01; “点击重新认识下我吧”&#x1f447; www.chosenmedtech.com 全新视觉界面 不一样的体验 新官网采用简洁大气的…

C++ PCL点云局部颜色变换

程序示例精选 C PCL点云局部颜色变换 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《C PCL点云局部颜色变换》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与应用…

asp.net售后维修管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 售后维修管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语 言开发 asp.net售后维修管理系统1 二、…

网络安全就业形势怎么样?

泻药&#xff0c;以下都是我本人的肺腑之言&#xff0c;是答主深耕职场多年&#xff0c;转战数家公司总结周围朋友的从业经验才总结出来的行业真相&#xff0c;真心希望帮助到还没有步入职场的大家&#xff0c;尤其是24届的应届毕业生&#xff0c;多掌握些就业信息就能少走一些…

QQ打不开找不到VCRUNTIME140.DLL怎么办?VCRUNTIME140.DLL修复方法分享

在现代社会&#xff0c;即时通讯软件已经成为我们日常生活和工作中不可或缺的一部分。其中&#xff0c;QQ作为中国最受欢迎的即时通讯软件之一&#xff0c;为我们提供了方便快捷的交流方式。然而&#xff0c;在使用过程中&#xff0c;我们可能会遇到各种问题&#xff0c;其中之…

DOCKER本地仓库

概述 随着docker的应用越来越多&#xff0c;安装部署越来越方便&#xff0c;批量自动化的镜像生成和发布都需要docker仓库的本地化应用。 试用了docker的本地仓库功能&#xff0c;简单易上手&#xff0c;记录下来以备后用。 环境 centos&#xff1a;CentOS release 7.0 (F…

2023年中国视频流媒体行业发展历程及趋势分析:未来市场规模趋于平稳[图]

随着移动通信的发展和视频内容产业供给端的繁荣&#xff0c;流媒体视频平台已经成为互联网用户上网时长最长的应用之一。在线视频行业经历了十几年的规范发展阶段&#xff0c;在各大头部平台百花齐放的现状下&#xff0c;难以实现一家独大&#xff0c;但部分平台有领先优势&…

VP记录——The 2021 CCPC Weihai Onsite

网址 2021CCPC威海 赛时过题与罚时 A.Goodbye, Ziyin! 签到题&#xff0c;队友写的 #include<bits/stdc.h> using namespace std; int cnt[10], de[1000010]; int main() {int n;cin >> n;for(int i 1; i < n; i) {int u, v;scanf("%d %d", &…

Spring Boot自动加载

问&#xff1a;自动装配如何实现的&#xff1f; 答&#xff1a;简单来说就是自动去把第三方组件的Bean装载到IOC容器中&#xff0c;不需要开发人员再去写Bean相关的配置&#xff0c;在springboot应用里面只需要在启动类上去加上SpringBootApplication注解&#xff0c;就可以去实…

自动售货机销售数据分析与应用

⭐简单说两句⭐ 作者&#xff1a;后端小知识 CSDN个人主页&#xff1a;后端小知识 &#x1f50e;GZH&#xff1a;后端小知识 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 摘要&#xff1a; 本案例将主要结合自动售货机的实际情况&#xff0…