重学Java 9 方法(函数)⭐

要争气,因为心里憋着太多的不服气

                                       ——24.1.18

数组重点回顾

        1.概述:容器,本身属于引用数据类型

        2.特点:

                ①定长

                ②既可以存储基本数据类型的数据,还可以存储引用数据类型的数据

        3.定义:

                动态初始化:数据类型[ ] 数组名 = new 数据类型{数组长度}

                静态初始化:数据类型[ ] 数组名 = new 数据类型{数据1,数据2,……} 

        4.数组操作:

                ①获取数组长度:数组名.length

                ②存储数据:数组名[索引值] = 元素 -> 将元素存储到数组指定的索引上

                ③获取元素:数组名[索引值]

                ④遍历:数组名.fori

                ⑤索引:指的是元素在数组中存储的位置

                               从0开始,最大索引是数组.length - 1,唯一,不能重复

        5.操作数组时容易出现的异常:

                ①数组索引越界异常:ArrayIndexOutOfBoundsException

                    原因:操作的索引超出了数组索引异常

                ②空指针异常:NullPointerException

                    原因:对象为null,然后再去操作此对象

        6.内存:

                ①栈:方法的运行在栈

                ②堆:数组、对象都在堆,而且每new一次都会在堆中开辟一个空间,堆内存会为此空间分配一个地址值

                ③方法区:代码运行之前的预备区,存储class文件

                ④本地方法栈

                ⑤寄存器

        7.二维数组概述:数组中有多个一维数组/二维数组是元素为一维数组的一维数组

                ①动态初始化定义:数据类型[ ][ ] 数组名 = new 数据类型[m][n]

                        m:代表的是二维数组的长度

                        n:代表的是每一个一维数组的长度

                ②静态初始化定义(简化形式):

                        数据类型[ ] 数组名 = {{元素1,元素2,…},{元素1,元素2,…},{元素1,元素2,…}…}

        8.二维数组操作:

                ①获取长度:数组名.length

                ②存元素:数组名[i][j] = 值

                        i:代表的是一维数组在二维数组中的索引位置

                        j:代表的是元素在一维数组中的索引位置

                ③获取元素:数组名[i][j]

                ④遍历:嵌套for 先将一维数组从二维数组中遍历出来,再遍历每一个一维数组

一、方法的使用

1.方法介绍

若所有的代码都在main方法中,会显得main方法代码太多,太乱,太臃肿 -> 不好维护

将代码块分为三个区域,每个区域存该区域模块相应的代码

分好模块后,直接调用功能名称就好了

将不同功能的方法放到不同的方法中,想执行某个功能,直接调用方法名就好,对应的代码被自动执行起来,将来维护的时候,直接找到对应的方法,就可以对其直接进行修改维护

方法:

        拥有功能性代码的代码块

        将不同的功能放在不同的方法中,给每个方法取个名字,直接调用方法名,对应的方法就被执行起来了,便于维护。

通用定义格式:

        修饰符 返回值类型 方法名(参数){

                方法体

                return 结果

        }

        ①无参无返回值方法

        ②有参无返回值方法

        ③无参有返回值方法

        ④有参有返回值方法

2.简单方法定义(无参无返回值)

1.无参无返回值方法的定义:

        public static void 方法名(){

                方法体 -> 实现此方法的具体代码

        }

2.调用:

        在其它方法中:方法名()

3.注意事项:

        ①void关键字代表无返回值,写了void,就不要在方法中写return了

        ②方法不调用,不执行,main方法是jvm自动调用的

        ③方法之间是平级关系,不能嵌套调用

        ④方法的执行顺序和定义顺序无关,只和调用的顺序有关

    public static void main(String[] args) {farmer();cooker();personal();}//农民伯伯public static void farmer(){System.out.println("播种");System.out.println("施肥");System.out.println("拔草");System.out.println("浇水");System.out.println("除虫");System.out.println("收割");}//厨师public static void cooker(){System.out.println("洗菜");System.out.println("切菜");System.out.println("炒菜");System.out.println("装盘");}//自己个人public static void personal(){System.out.println("洗手");System.out.println("吃菜");}

 案例

定义一个方法,实现两个整数相加

    public static void main(String[] args) {Add();System.out.println("调用了Add方法");}public static void Add(){int a = 20;int b = 55;int sum = a+b;System.out.println("sum = " + sum);}

settings勾选,使得每个方法之间被隔开

3.方法定义各部分解释

①修饰符:public static

②返回值类型:

        该方法最终返回结果的数据类型

                比如:return 1 -> 方法上的返回值类型写int

                           return 2.5 -> 方法上的返回值类型写double

                           return "" -> 方法上的返回值类型写String

                如果没有返回值,不要写具体的返回值类型,要写void

③方法名:见名知意(小驼峰原则)

④参数:进入到方法内部参与执行的数据(数据类型 变量名,数据类型 变量名)

⑤方法体:实现该方法的具体代码

4.有参数无返回值方法

1.格式:

public static void 方法名(数据类型 变量名){

        方法体

}

定义一个方法,实现两个整数相加

    public static void main(String[] args) {sum(10,20);}public static void sum(int a,int b){int sum = a+b;System.out.println("sum = " + sum);}

5.无参数有返回值方法

1.格式:

public static void 方法名(数据类型 变量名){

        方法体

}

定义一个方法,实现两个整数相加,将结果返回

    public static void main(String[] args) {int sum=sum();System.out.println("sum = " + sum);}public static int sum(){int a = 10;int b = 20;return a+b;}

6.有参数有返回值方法

1.格式:

public static void 方法名(数据类型 变量名){

        方法体

}

2.调用:

        ①打印调用:

                sout(方法名(具体的值))

        ②赋值调用:(推荐)

                数据类型 变量名 = 方法名(具体的值)

定义一个方法,实现两个整数相加,将结果返回

    public static void main(String[] args) {int sum=sum();System.out.println("sum = " + sum);}public static int sum(){int a = 10;int b = 20;return a+b;}

二、方法的参数和返回值

1.形参和实参

1.形式参数(形参):在定义方法的时候形式上定义的参数,此参数还没有值

2.实际参数(实参):在调用方法的时候给形参赋予具体的值

2.参数和返回值使用的时机

1.参数:

        当想将方法A的数据传递到方法B时,那么定义方法B时就需要带两个参数,在方法A中调用方法B时,可以将方法A中的数据通过参数传递到方法B中

2.返回值:

        调用方法A时,想要方法A的结果,去参与其他的操作,那么方法A就需要将自己的结果返回

    public static void main(String[] args) {int a = 10;int b = 20;method(a,b);int result = sum(a,b);System.out.println("result = " + result);}public static void method(int a,int b){System.out.println(a+" "+b);}public static int sum(int a,int b){int result =a + b;return result;}

框架、返回值的三体架构思想

1.Controller(表现层)接受的请求参数需要一层一层传递到service(业务层),service层需要将请求参数再传递到dao(持久层),此时service以及dao的方法都需要参数接收

2.dao层的结果需要传递给service,service再传递给controller层,此时dao层和service方法需要返回值

3.变量作为实参使用

案例

定义一个方法,比较两个整数的大小,如果第一个大于第二个,返回true,否则返回false

    public static void main(String[] args) {Scanner sc = new Scanner(System.in);int a = sc.nextInt();int b = sc.nextInt();boolean Pare = Compare(a,b);//传递的是a和b代表的数据,不是变量本身System.out.println("Pare = " + Pare);}public static boolean Compare(int a,int b){if(a>b){return true;}else{return false;}}

二、方法的注意事项

1.方法不调用不执行

2.方法的执行顺序只和调用顺序有关

3.方法之间不能互相嵌套

4.void不能和return结果共存,但是 void能和return共存

        ①void:代表没有返回值

        ②return 结果:就代表有返回值,先将结果返回,然后结束方法

        ③return:仅仅代表结束方法,不代表有返回值

5.一个方法中不能连续写多个return,也就是说,一个方法不能有多个返回值

6.调用方法时,先看一下方法有没有被定义,如果没有被定义将会直接报错

初学者如何使用方法:

        1.先定义在调用

        2.如果是没有返回值的方法,直接再被调用的方法内部输出结果

        3.如果是带返回值的方法,在调用完毕后,用一个变量去接受结果,输出这个变量

        4.调用方法:

                直接调用:方法名()或 方法名(实参) -> 只针对于无返回值的方法

                打印调用:sout(方法名())或者 sout(方法名(实参)) -> 针对有返回值的方法,不推荐使用

                赋值调用:数据类型 变量名 = 方法名() 或者 数据类型 变量名 = 方法名(实参) -> 针对于有返回值的方法,推荐使用

      

          5.练习:

                ①如果定义的方法没有返回值,写个void,不要写renturn结果

                ②如果定义的方法有返回值,将void改为具体的返回值类型,在方法体中最后写一个return结果,将结果返回

                ③如果方法有返回值,调用的时候推荐使用赋值调用,如果没有返回值,使用直接调用

                ④练习的时候,完成一个简单的需求,针对这个需求,定义四种方法,并成功调用

三、方法练习

1.方法练习1(判断奇偶性)

键盘录入一个整数,将整数传递到另外一个方法中,在此方法中判断这个整数的奇偶性

如果是偶数,方法返回“偶数”,否则返回“奇数”

    public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请您输入一个整数");int num = sc.nextInt();String result = Judge(num);System.out.println("result = " + result);}public static String Judge(int a){if(a%2==0){return "偶数";}else{return "奇数";}}

2.方法练习2(1-100的和)

求出1-100的和,并将结果返回

    public static void main(String[] args) {int num = Sum();System.out.println("num = " + num);}public static int Sum(){int sum = 0;for (int i = 0; i <= 100; i++) {sum += i;}return sum;}

3.方法练习3(不定次数打印)

定义一个方法,给这个方法传几,就让这个方法循环打印几次“一切都会好的”

    public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请您输入一个数,选择打印次数");int num = sc.nextInt();Print(num);}public static void Print(int a){for (int i = 0; i < a; i++) {System.out.println("一切都会好的");}}

4.方法练习4(遍历数组)

在main方法中定义一个数组,将数组传递到方法中去,在此方法中遍历数组

    public static void main(String[] args) {int[] arr = new int[9];Scanner sc = new Scanner(System.in);System.out.println("请您给数组赋值");int i = 0;for (i = 0; i < 9; i++) {arr[i] = sc.nextInt();}Print(arr);}public static void Print(int arr[]){for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}return;}

5.方法练习5

数组作为返回值返回

数组本身是引用数据类型,引用数据类型做方法参数传递,传递的是地址值

    public static void main(String[] args) {int[] arr=method();//用和方法类型相同类型的变量接收for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}public static int[] method(){int a = 10;int b = 20;int sum = a+b;int sub = a-b;int[] arr1 = {sum,sub};return arr1;//返回的是一个int[],那么返回值类型也应该是int[]}

四、方法的重载

1.定义

方法名相同 参数列表不同的方法

参数列表不同:

        ①参数个数不同

        ②参数类型不同

        ③参数类型顺序不同

2.引例

定义一个方法,分别求2个整数相加,3个整数相加,4个整数相加

    public static void main(String[] args) {int a = 1;int b = 2;int c = 3;int d = 4;sum(a,b);sum(a,b,c);sum(a,b,c,d);}//两个整数相加public static void sum(int a,int b){System.out.println("(a+b) = " + (a + b));}//三个整数相加public static void sum(int a,int b,int c){System.out.println("(a+b+c) = " + (a + b + c));}//四个整数相加public static void sum(int a,int b,int c,int d){System.out.println("(a+b+c+d) = " + (a + b + c + d));}

3.方法重载的注意事项

1.判断两个方法是否为重载方法,与什么无关?

        ①和方法的参数名无关

        ②和方法的返回值无关

        方法名严格区分大小写

2.什么时候用到方法的重载?

        如果定义方法的功能一样,只不过实现细节不一样,就可以考虑定义成重载的方法

五、总结

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt拖拽组件与键盘事件

1.相关说明 1.设置widget或view的拖拽和放置模式函数setDragDropMode参数说明&#xff0c;NoDragDrop(无拖拽和放置)、DragOnly(只允许拖拽)、DropOnly(只允许放置)、DragDrop(允许拖拽和放置)、InternalMove(只移动不复制) 2.设置widget或view的放置动作函数setDefaultDropAct…

RocketMQ源码阅读-Message顺序发送与消费

RocketMQ源码阅读-Message顺序发送与消费 1 普通顺序消息2 严格顺序消息2.1 分配消息队列2.2 移除消息队列2.3 消费消息队列2.3.1 消费消息2.3.2 处理消费结果2.3.3 消息处理队列ProcessQueue2.3.4 小结 3 总结 Message的拉取与消费逻辑&#xff0c;上一篇已经分析过。 这一篇…

基于springboot+vue的社区团购系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

军事智能中的深度强化学习不同于传统的深度强化学习

在军事智能中&#xff0c;“诡”和“诈”是两个最重要的概念。 “诡”变指的是智能体通过采取一些不可预测或复杂的变化策略来获得优势。诡变可能包括逃避对手的观察或引诱对手采取不利的行动。智能体可以使用诡变来欺骗对手&#xff0c;使其做出错误的决策或暴露其策略。 “诈…

Python编辑开发---pycharm pro 2023 中文

PyCharm Pro 2023是一款功能强大的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在提高Python开发人员的生产力。它提供了智能代码编辑、实时代码分析和调试工具&#xff0c;支持版本控制和数据库工具&#xff0c;以及可扩展的插件系统。PyCharm Pro 2023可在多…

医学图像的图像处理、分割、分类和定位-1

一、说明 本报告全面探讨了应用于医学图像的图像处理和分类技术。开展了四项不同的任务来展示这些方法的多功能性和有效性。任务 1 涉及读取、写入和显示 PNG、JPG 和 DICOM 图像。任务 2 涉及基于定向变化的多类图像分类。此外&#xff0c;我们在任务 3 中包括了胸部 X 光图像…

【PyTorch】PyTorch之Tensors索引切片篇

文章目录 前言一、ARGWHERE二、CAT、CONCAT、CONCATENATE三、CHUNK四、GATHER五、MOVEDIM和MOVEAXIS六、PERMUTE七、RESHAPE八、SELECT九、SPLIT十、SQUEEZE十一、T十二、TAKE十三、TILE十四、TRANSPOSE十五、UNBIND十六、UNSQUEEZE十七、WHERE 前言 介绍常用的PyTorch之Tenso…

pytest + allure(windows)安装

背景 软硬件环境&#xff1a; windows11&#xff0c;已安装anaconda&#xff0c;python&#xff0c;pycharm用途&#xff1a;使用pytest allure 生成报告allure 依赖java&#xff0c;点击查看java安装教程 allure 下载与安装 从 allure下载网址下载最新版本.zip文件 放在自…

Spring Web文件上传功能简述

文章目录 正文简单文件上传文件写入 总结 正文 在日常项目开发过程中&#xff0c;文件上传是一个非常常见的功能&#xff0c;当然正规项目都有专门的文件服务器保存上传的文件&#xff0c;实际只需要保存文件路径链接到数据库中即可&#xff0c;但在小型项目中可能没有专门的文…

汽车连接器接线端子和多芯线束连接界面

冷压接的开式压接和闭式压接以及热压接的超声波焊接对汽车连接器接线端子和多芯线束连接界面 连接器接线端子和多芯线束的连接是电子线束行业&#xff0c;特别是汽车行业常用的导线连接方式。汽车整车线束又由许多分支线束组成&#xff0c;而分支线束必须通过连接器实现连接&am…

kafka系列(二)

本章承接kafka一内容&#xff0c;文章在本人博客主页都有&#xff0c;可以自行点击浏览。 幂等性 请求执行多次&#xff0c;但执行的结果是一致的。 如果&#xff0c;某个系统是不具备幂等性的&#xff0c;如果用户重复提交了某个表格&#xff0c;就可能会造成不良影响。例如…

【React基础】– JSX语法

文章目录 认识JSX为什么React选择了JSXJSX的使用 React事件绑定this的绑定问题事件参数传递 React条件渲染React列表渲染列表中的key JSX的本质createElement源码Babel官网查看直接编写jsx代码 虚拟DOM的创建过程jsx – 虚拟DOM – 真实DOM声明式编程 阶段案例练习 认识JSX ◼ …