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,一经查实,立即删除!

相关文章

--内部类

目录 1. 成员内部类 2. 静态内部类 3. 局部内部类 4. 匿名内部类 在Java中&#xff0c;内部类是定义在其他类内部的类。内部类有以下几种形式&#xff1a;成员内部类、静态内部类、局部内部类和匿名内部类。 1. 成员内部类 概念 成员内部类是定义在外部类的成员位置上的类。…

Zigbee技术在智能农业领域的应用研究

Zigbee技术在智能农业领域的应用研究 **摘要&#xff1a;**随着现代信息技术的飞速发展&#xff0c;智能农业已成为当今农业发展的新趋势。Zigbee技术作为一种低功耗、低成本的无线通信技术&#xff0c;在智能农业领域具有广泛的应用前景。本文深入分析了Zigbee技术的原理和特…

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;代码…

【微服务篇】分布式事务方案以及原理详解

分布式事务是指事务参与者、资源服务器、事务管理器分布在不同的分布式系统的多个节点之上的事务。在微服务架构、大型分布式系统和云计算等环境中&#xff0c;由于系统间调用和资源访问的复杂性&#xff0c;分布式事务变得尤为重要。 应用场景 跨系统交易&#xff1a;当交易…

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…

JAVA 100道题(22)

22.实现一个生产者-消费者问题&#xff0c;使用Java的线程同步机制。 生产者-消费者问题是一个经典的并发编程问题&#xff0c;其中生产者产生数据&#xff08;或产品&#xff09;&#xff0c;消费者消费这些数据。在Java中&#xff0c;我们可以使用wait()和notify()方法或者Bl…

2024年03月CCF-GESP编程能力等级认证C++编程五级真题解析

本文收录于专栏《C++等级认证CCF-GESP真题解析》,专栏总目录:点这里。订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第1题 唯一分解定理描述的内容是( )? A. 任意整数都可以分解为素数的乘积 B. 每个合数都可以唯一分解为一系列素数的乘积 C. 两个不…

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…

数学错误总是越走越远,因为对前人一概不敢否定

最近整理了一下我以前对Erds-Turn猜想研究做的分析&#xff0c;得到的结论是&#xff1a;1927年产生的van der Waerden的结果尚未被正确证明&#xff0c;现存几个证明都有问题&#xff0c;特别地[F]的方法中无法证明在那个定义下的度量产生的拓扑里某些闭集是紧致集&#xff08…

2024年数字IC秋招-沐曦-GPU验证-笔试题

文章目录 前言一、选择题1. [多选]在Verilog里面&#xff0c;操作的可能的结果是2. [单选]在Verilog里面,如果想在逻辑中引入延时&#xff0c;可以使用3. [单选]如果X 4b1100,那么以下哪条语句会被执行?4. [多选]在Verilog里面&#xff0c;以下哪些对于操作符的描述是正确的5.…

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 #下载安装…

数据结构与算法-分治算法

数据结构与算法 数据结构与算法是计算机科学中的两个核心概念&#xff0c;它们在软件开发和问题解决中起着至关重要的作用。 数据结构 数据结构是计算机中存储、组织和管理数据的方式&#xff0c;它能够帮助我们高效地访问和修改数据。不同的数据结构适用于不同类型的应用场…