Java学习之方法

news2024/9/24 7:21:51

目录

方法

方法声明格式:

调用方式:

详细说明

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

语句块

练习

方法的重载(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.coloradmin.cn/o/1552084.html

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

相关文章

【2024年软考】老伙计的软考之路(1)软考报名

一、2024软考改革 仔细看工信部发的软考通知附件&#xff0c;对比上半年和下半年的考试科目变化。 比如高级&#xff1a; 1、信息系统项目管理师从之前的一年考两次变成了今年上半年只考一次。 2、网络规划设计师、系统规划与管理师变成下半年只考一次。 剩下的自己对比着…

Qt 多线程QThread的四种形式

重点&#xff1a; 1.互斥量&#xff1a;QMutex配套使用&#xff0c;lock(),unlock(),如果一个线程准备读取另一个线程数据时候采用tryLock()去锁定互斥量&#xff0c;保证数据完整性。 QMutexLocker简化版的QMutex,在范围区域内使用。 QMutex mutex QMutexLocker locker(&…

Vivado使用(2)——综合运行与OOC

目录 一、综合运行 二、OOC 2.1 如何设置 OOC 模块 2.2 存根文件和黑盒属性 2.3 使用限制 2.4 另一种设置方法 一、综合运行 一个“运行&#xff08;run&#xff09;”是指定义和配置设计在综合过程中的各方面&#xff0c;包括&#xff1a;使用到约束&#xff0c;针对的…

使用 OpenOCD 来调试 STM32

STM32 在 Windows 上的交叉编译二 调试 在上一篇博客 《在Windows上交叉编译STM32(环境搭建)》 &#xff0c;已经让 CubeMX 生成的工程成功编译&#xff0c;并下载到板子上了。 这篇博客主要继续介绍接下来的步骤&#xff0c;调试。硬件是使用的 ST-LINK &#xff0c;别的也无…

【任职资格】某大型制造型企业任职资格体系项目纪实

该企业以业绩、责任、能力为导向&#xff0c;确定了分层分类的整体薪酬模式&#xff0c;但是每一名员工到底应该拿多少工资&#xff0c;同一个岗位的人员是否应该拿同样的工资是管理人员比较头疼的事情。华恒智信顾问认为&#xff0c;通过任职资格评价能实现真正的人岗匹配&…

RobotFramework编写用例,在Jenkins上如何实现用例的并发运行?

我们了解RobotFramework编写自动化测试用例的方法&#xff0c;了解如何将用例在Jenkins上运行。 但是&#xff0c;随着用例的增多&#xff0c;传统的pybot/robot命令运行测试用例会耗费大量的时间&#xff0c;这就慢慢成为了一个苦恼的问题。 那么&#xff0c;在Jenkins上如何…

Redis数据结构的基础插入操作

数据结构与内部编码 Redis常见的数据结构 数据结构和内部编码 数据结构的插入操作 在Redis中&#xff0c;数据结构的插入操作取决于你要插入的数据类型。以下是一些常见的数据结构和它们的插入操作&#xff1a; 字符串 (String)&#xff1a;使用 SET 命令来插入字符串。例…

考研数学|武忠祥学习包搭配《660》和《880》

一、660、880、三大计算简单分析 660题 这本题册具有高难度、综合度和深度&#xff0c;属于高质量的题材。我建议不要在基础阶段就着手解决其中的660题&#xff0c;因为这可能会影响你的信心。相反&#xff0c;你可以在基础阶段完成一轮学习后&#xff0c;将这些题目留到强化…

Linux manim安装

简介 根据文档可知, manim目前分为两个版本, 一个是由3Blue1Brown维护更新的最新版本的manimgl, 另一个是稳定的社区版本manim or manimce. 两个版本在安装和使用上都有些不同, 不要搞混. Linux manim ERROR No package ‘pangocairo’ found Getting requirements to buil…

Spring-IoC-属性注入的注解实现

1、创建对象的注解 Component 用于声明Bean对象的注解&#xff0c;在类上添加该注解后&#xff0c;表示将该类创建对象的权限交给Spring容器。可以直接将这些类直接创建&#xff0c;使用的时候可以直接用。 注解的value属性用于指定bean的id值&#xff0c;value可以省略&…

电源噪声的起因及危害

对造成电源不稳定的根源进行简单分析如下,主要在于两个方面:一是器件高速开关状态下,瞬态的交变电流过大;二是电流回路上存在的电感。从表现形式上来看又可以分为三类:同步开关噪声(SSN),有时被称为Δi噪声,地弹(Ground bounce)现象也可归于此类(图1-a);非理想电…

HTTP状态 405 - 方法不允许

方法有问题。 用Post发的请求&#xff0c;然后用Put接收的。 大家也可以看看是不是有这种问题 <body><h1>HTTP状态 405 - 方法不允许</h1><hr class"line" /><p><b>类型</b> 状态报告</p><p><b>消息…

windwos权限维持

1.php 不死马权限维持 <?php ignore_user_abort(); //关掉浏览器&#xff0c;PHP脚本也可以继续执行. set_time_limit(0);//通过set_time_limit(0)可以让程序无限制的执行下去 $interval 5; // 每隔*秒运行 do { $filename test.php; if(file_exists($filename)) { echo…

Spring Integration 是什么?

Spring Integration 是什么&#xff1f; Spring Integration 在 Spring 家族不太有名气&#xff0c;如果不是有需求&#xff0c;一般也不会仔细去看。那么 Spring Integration 是什么呢&#xff1f;用官方的一句话来解释就是&#xff1a;它是一种轻量级消息传递模块&#xff0…

快速上手Spring Cloud 十四:璀璨物联网之路

快速上手Spring Cloud 一&#xff1a;Spring Cloud 简介 快速上手Spring Cloud 二&#xff1a;核心组件解析 快速上手Spring Cloud 三&#xff1a;API网关深入探索与实战应用 快速上手Spring Cloud 四&#xff1a;微服务治理与安全 快速上手Spring Cloud 五&#xff1a;Spring …

虚幻引擎资源加密方案解析

前段时间&#xff0c;全球游戏开发者大会(Game Developers Conference&#xff0c;简称GDC)在旧金山圆满落幕&#xff0c;会议提供了多份值得参考的数据报告。根据 GDC 调研数据&#xff0c;当下游戏市场中&#xff0c;Unreal Engine (下文简称虚幻)和 Unity 是使用最多的游戏引…

神奇的css radial-gradient

使用css radial-gradient属性&#xff0c;创造一个中间凹陷进去的形状。如下图 background: radial-gradient(circle at 50% -0.06rem, transparent 0.1rem, white 0) top left 100% no-repeat;

VLAN实验记录---对抗遗忘

sw1的接口6应该调成混杂模式&#xff0c;因为pc2,4,5,6的pvid各不相同而网段相同&#xff0c;所以往上去路由时应该剥离标记&#xff08;VLAN里面是标记而不是标签&#xff09;出去&#xff0c;这样 路由器上的物理接口用来管理不带标记的流量&#xff0c;而vlan2流量的往上打上…

Vue2(十一):脚手架配置代理、github案例、插槽

一、脚手架配置代理 1.回顾常用的ajax发送方式&#xff1a; &#xff08;1&#xff09;xhr 比较麻烦&#xff0c;不常用 &#xff08;2&#xff09;jQuery 核心是封装dom操作&#xff0c;所以也不常用 &#xff08;3&#xff09;axios 优势&#xff1a;体积小、是promis…

springboot检测脚本

import requests import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) session requests.session()# 从文本文件中读取 with open(dic.txt, r) as file:paths file.readlines()# 移除每个末尾的换行符 paths [path.strip() for path in pa…