Java学习之方法

目录

方法

方法声明格式:

调用方式:

详细说明

示例 --方法的声明及调用

语句块

练习

方法的重载(overload)

构成条件

示例 --方法重载

递归结构

缺陷

方法

  • 方法(method):一段用于完成特定功能的代码片段,类似于其他语言的函数(function)。

  • 面向过程中,函数是最基本单位,整个程序由一个个函数调用组成

  • 面向对象中,整个程序的基本单位是类,方法属于类和对象

方法声明格式:

[修饰符1 修饰符2 ...] 返回值类型 方法名(形式参数列表){

Java 语句 ; ... ... ...

}

调用方式:

普通方法对象名.方法名(实参列表)
静态方法类名.方法名(实参列表)

详细说明

  • 形式参数:在方法声明时用于接收外界传入的数据。(方法定义时)

  • 实参:调用方法时实际传给方法的数据。(方法调用时)

  • 返回值:执行完毕后,返还给调用它的环境的数据。

  • 返回值类型:事先约定的返回值的数据类型,如无返回值,则为void。

示例 --方法的声明及调用

public class TestMethod {public static void main(String[] args) {sayLoveU();add(33,66,56) ;  // add(33,66,56)add(100,200,300); // 调用的是实参}
​public static void sayLoveU(){System.out.println("I Love U~");System.out.println("我爱你~");System.out.println("520~");}
​public static int add(int a, int b, int c){  // 定义时是形参int sum = a + b + c;System.out.println(sum);return sum;   // return 用于返回值及结束方法运行}
}

语句块

也叫复合语句,定义的变量只能用于自己,外部不能使用语句块的变量,但语句块可以使用外部的变量。

public class TestMethod {public static void main(String[] args) {
​int n;int i;{int j;int n; // 错误} // j 的作用域仅限于此}
}

练习

定义一个方法处理公司的迟到问题:

  • 输入:迟到时间、月薪

  • 处理逻辑:

    • 迟到1-10分钟,警告

    • 迟到11-20分钟,罚款100元

    • 迟到21-30分钟,罚款200元

    • 迟到30分钟以上,扣除半日工资

    • 迟到一小时以上,按照旷工计算,扣3日工资

  • 输出:罚款金额

public class TestLatePunish {public static void main(String[] args) {int a = punishLate(6000,5);int b = punishLate(6000,25);int c = punishLate(5000,55);int d = punishLate(6600,66);int punishSum = a + b + c + d;
​System.out.println("公司总罚款数是:" + punishSum);}
​public static int punishLate(int monthSalary, int time){int punishSalary = 0;System.out.println("你迟到的时间:" + time);System.out.println("你的月薪:" + monthSalary);if(time >= 1 && time <= 10){System.out.println("警告一次奥!再迟到罚钱啦!");}else if(time <= 20){monthSalary -= 100;punishSalary = 100;System.out.println("罚款:" + punishSalary);System.out.println("本月工资还剩:" + monthSalary);}else if(time <= 30){monthSalary -= 200;punishSalary = 200;System.out.println("罚款:" + punishSalary);System.out.println("本月工资还剩:" + monthSalary);}else if(time <= 60){monthSalary -= monthSalary / 30;punishSalary = monthSalary / 30 / 2;System.out.println("罚款:" + punishSalary);System.out.println("扣除半日工资!本月工资还剩:" + monthSalary);}else{monthSalary -= monthSalary / 30 * 3;punishSalary = monthSalary / 30 * 3;System.out.println("罚款:" + punishSalary);System.out.println("本月工资还剩:" + monthSalary);}return punishSalary;}
}

方法的重载(overload)

重载:一个类中可以定义多个名称相同,但形式参数列表不同的方法。

注:重载的方法,实际上是完全不同的方法,只是名称相同

构成条件

  • 不同的含义:形参类型、形参个数、形参顺序不同

  • 只有返回值不同不构成方法的重载

    • eg:int a(String str()){} 与 void a(String str()){} 不构成重载

  • 只有形参的名称不同,不构成方法的重载

    • eg:int a(String t){} 与 int a(String s){} 不构成重载

示例 --方法重载

public class TestOverload {public static void main(String[] args) {add();add(10);add(10,20);add(33.56);add(33,56.33);add(33.56,66);
​}
// 以下是方法的重载:static void add(int a,int b){}static void add(int a){}static void add(){}static void add(double a){}static void add(double a,int b){}static void add(int b,double a){}
​
}

递归结构

递归是一种常见的算法思路,如:深度优先搜索等

包括以下两部分:

  • 定义递归头:解决-- 什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归结束的条件。

  • 递归体:解决-- 什么时候需要调用自身方法

示例 --使用递归求 n!

public class TestdiGui {public static void main(String[] args) {long startTime = System.currentTimeMillis();   // 获取当前时刻long result = factorical(10);long endTime = System.currentTimeMillis();   System.out.println(result);System.out.println(endTime - startTime);}
​public static long factorical(int n){if(n == 1){return 1;}else{return n * factorical(n-1);}}
}
​
// 使用循环求public static void main(String[] args) {int i = 10;int result = 1;for(int j = 0;j < i; j++) {if (i > 1) {result = result * i * (i - 1);i -= 2;   // 第一次 10*9,第二次减2:8*7 ....}}System.out.println(result);}
缺陷

会占用大量的系统堆栈,内存耗用多,递归调用层次多时速度要比循环慢得多

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

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

相关文章

opencv 十九 python下实现多线程间rtsp直播流的复用

在多线程拉流的任务场景中&#xff0c;有时需要将一个rtsp拉取多次&#xff0c;每重新打开一次rtsp视频流就要多消耗一次带宽&#xff0c;为此基于类的静态对象实现rtsp视频流的复用。 1、实现代码 import threading import cv2,time #接收摄影机串流影像&#xff0c;采用多线…

【嵌入式机器学习开发实战】(七)—— 政安晨:通过ARM-Linux掌握基本技能【环境准备:树莓派】

ARM-Linux是一种针对ARM架构的操作系统&#xff0c;它的设计目标是在低功耗、低成本的硬件平台上运行。ARM-Linux可以运行在多种ARM处理器上&#xff0c;包括树莓派。 树莓派&#xff08;Raspberry Pi&#xff09;是一款基于ARM架构的单板计算机&#xff0c;由英国的树莓派基金…

【系统架构师】-第12章-信息系统架构

信息系统架构(ISA)是指对某一特定内容里的信息进行统筹、规划、设计、安排等一系列有机处理的活动。 为了更好地理解信息系统架构的定义&#xff0c; 特作如下说明: (1)架构是对系统的抽象&#xff0c;它通过描述元素、元素的外部可见属性及元素之间的关系来反映这种抽象。因此…

open_clip仓库成分与模型文件model.py 介绍

起因&#xff1a; 在DA-CLIP的开源库的DA-CLIP.md中自述该项目基于CLIP 和open_clip&#xff0c;在之前的退化类型检测中 我一度以为仓库只是使用了CLIP 的源码&#xff0c; 然而当发现缺少da-clip的模型名称时&#xff0c;我发现DA-CLIP使用的完全是open_clip的代码版本&#…

16.JRE和JDK

程序员在编写代码的时候其实是需要一些环境&#xff0c;例如我们之前写的HelloWorld。我们需要的东西有JVM、核心类库、开发工具。 1、JVM&#xff08;Java Virtual Machine&#xff09;&#xff1a;Java虚拟机&#xff0c;真正运行Java程序的地方。没有虚拟机&#xff0c;代码…

C语言例4-9:格式字符s的使用例子

代码如下&#xff1a; //格式字符s的使用例子 #include<stdio.h> int main(void) {printf("%s,%5s,%-5s\n","Internet","Internet","Internet");//以三种不同格式&#xff0c;输出字符串printf("%10.5s,%-10.5s,%4.5s\n&q…

rtthread studio 基于bsp生成代码stm32l475正点原子潘多拉,以及硬件配置

1、基于bsp生成代码 rtthread studio 很强大的一个功能就是可以根据芯片或者bsp 生成驱动代码&#xff0c;而且rtthread内核 已经集成到了代码中&#xff01;&#xff01;只需要关注于如何使用硬件和设备完成我们想要的功能就可以&#xff1b; 它的官网文档也特别详细&#x…

实用有趣的宝藏网站推荐!【第二期】

上次给大家推荐了10个宝藏网站&#xff08;http://t.csdnimg.cn/qcRWY&#xff09;&#xff0c;这次我又来啦&#xff01; 话不多说&#xff0c;直接开始&#xff01; 先收藏&#xff0c;防止以后找不到了&#xff01; 整理不易&#xff0c;顺便把赞留下吧&#xff01; 1. 爱…

江苏开放大学2024年春《市政管理学050011》第一次形考作业参考答案

答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 电大搜题 多的用不完的题库&#xff0c;支持文字、图片搜题…

代码随想录算法训练营Day55 ||leetCode 583. 两个字符串的删除操作 || 72. 编辑距离

583. 两个字符串的删除操作 这道题的状态方程比上一题简单一些 初始化如下 class Solution { public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() 1, vector<int>(word2.size() 1));for (int i 0; i < word1…

Linux 基础IO [缓冲区文件系统]

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux知识分享⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Linux知识   &#x1f51d; 目录 前言 一.Linux下一切皆文件 二.缓冲…

在线接口文档预言方案

在线接口文档预言方案 要求&#xff1a; ​ 支持自动生成接口文档 ​ 能够支持在线测试(http&#xff0c;websocket) ​ 对代码没有侵入性 一、目前涉及的相关技术收集 sudo apt update #更新数据 sudo apt upgrade #更新软件 sudo apt install openssh-server #下载安装…

14.黑盒测试

黑盒测试、白盒测试考题固定&#xff0c;重视&#xff01;&#xff01;&#xff01; 等价类、边界值、场景法&#xff1b;考察频率高&#xff01;&#xff01;&#xff01; 因果图&#xff0c;偶尔考&#xff1b;要能看懂因果图&#xff0c;结合题干填写缺失的部分内容&#x…

Redis中的客户端(三)

客户端 身份验证 客户端状态的authenticated属性用于记录客户端是否通过了身份验证: typedef struct redisClient {// ...int authenticated;// ... } redisClient;如果authnticated的值为0&#xff0c;那么表示客户端未通过身份验证&#xff1b;如果authenticated的值为1&a…

智慧酒店(二):AI智能分析网关V4视频分析技术在酒店管理中的应用

一、人工智能技术如何应用在酒店管理中&#xff1f; 随着科技的飞速发展&#xff0c;人工智能技术已经逐渐渗透到我们生活的方方面面&#xff0c;其中&#xff0c;酒店管理行业便是其应用的重要领域之一。人工智能技术以其高效、精准的特点&#xff0c;为酒店管理带来了革命性…

修改nuxtjs项目中的浏览器图标步骤

处理步骤&#xff1a; 打开配置页面 使用el-upload 上传图片到后台 后台把图片转为ico&#xff0c;返回图标路径 配置页面修改本页面预览图&#xff0c;点击保存&#xff0c;修改的数据库。 通知nuxt布局页面&#xff0c;修改head节点中的图标属性&#xff0c;…

《VulnHub》Lampião:1

title: 《VulnHub》Lampio&#xff1a;1 date: 2024-03-28 21:37:49 updated: 2024-03-28 21:37:50 categories: WriteUp&#xff1a;Cyber-Range excerpt: 关键技术&#xff1a;主机发现&#xff0c;端口扫描、服务探测、操作系统探测&#xff0c;对开放的端口探测漏洞&#x…

寒冬继续!飞书发全员信 “适当精简团队规模”

多精彩内容在公众号。 3月26日飞书CEO谢欣发布全员信&#xff0c;宣布进行组织调整&#xff0c;同时为受到影响的“同学”提供补偿方案和转岗机会。 在致员工的一封信中&#xff0c;谢欣坦诚地指出&#xff0c;尽管飞书的团队人数众多&#xff0c;但组织结构的不够紧凑导致了工…

fastadmin学习05-开启debug以及配置

FastAdmin 框架提供了对 .env 环境变量配置的支持&#xff0c;并附带一个默认示例文件 .env.sample。在安装后&#xff0c;框架并不会自动启用 env 环境变量&#xff0c;需要手动将 .env.sample 复制为 .env 并进行配置。 如果不开启.env会读取database.php中的配置 下面测试…

redis缓存穿透、缓存击穿、缓存雪崩及其解决方法

缓存穿透、缓存击穿、缓存雪崩是redis的三大问题。 在介绍这三大问题之前&#xff0c;我们需要先了解Redis作为一个缓存中间件&#xff0c;在项目中是如何工作的。首先看一下在没有缓存中间件的时候的系统数据访问的架构图&#xff1a; 客户端发起一个查询请求的时候&#xff…