什么是方法

  • Java方法是语句的集合,他们在一起执行一个功能。

    • 方法是解决一类问题的步骤的有序组合
    • 方法包含于类或者对象中
    • 方法在程序中被创建,在其他地方被吸引
  • 设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只能完成一个功能,这样有利于我们后期的拓展

  • 方法的命名规则,采用的是小驼峰命名法,而且要见名知意。

方法的定义

  • Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下的语法:

    • 方法包含一个方法头和方法体。下面是一个方法的所有部分:

      • 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
      • 返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType是关键字void。
      • 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
      • 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
        • 形式参数:在方法被调用时用于接受外界输入的数据。
        • 实参:调用方法时实际传给方法的数据。
      • 方法体:方法体包含具体的语句,定义该方法的功能。

方法的调用

  • 调用方法:对象名 方法名(实参列表)
  • Java支持两种调用方法的方式,根据方法是否有返回值来选择。
  • 当方法有返回值的时候,方法调用通常被当作一个值。例如:
  int larger = max(30, 40);
  • 如果方法返回值是void,方法调用一定是一条语句。
  System.out.println("hello, world!");

方法的重载

  • 重载就是在一个类中,有相同函数名称,但是形参不同的函数。
  • 方法的重载规则:
    • 方法名称必须相同
    • 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)
    • 方法的返回类型可以相同也可以不同。
    • 仅仅返回类型不同不足以成为方法的重载。
  • 实现理论:
    • 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。

命令行传参

  • 有时候我们希望运行一个程序时在传递给它消息。这要靠传递命令行参数给main()函数实现。
public class CommandLine{
public static void main(String args[]){
for(int i = 0; i < args.length; i++){
System.out.println("args[ " + i +"]: "+ args[i]);
}
}
}

可变参数

  • JDK1.5开始,Java支持传递同类型的可变参数给一个方法。
  • 在方法声明中,在指定参数类型后加一个省略号(...)
  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
  public class Demo02 {
public static void main(String[] args) {
printMax(15.2, 14.8, 42.55, 6.10, 83.14);
} public static void printMax(double... numbers){
if(numbers.length == 0){
System.out.println("No argument paassed");
return;
} double result = numbers[0]; //排序
for(int i = 1; i < numbers.length; i++){
if(numbers[i] > result){
result = numbers[i];
}
}
System.out.println("The max value is " + result);
}
}

递归

  • A方法调用B方法,我们很容易理解。
  • 递归就是:A方法调用A方法,就是我们自己调用我们自己。
  • 利用递归,我们可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化一个与原问题相似的规模较小的问题来求解,递归策略只需少量的代码就可以描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用优先的语句来定义对象的无限集合。
  • 递归结构包括两个部分
    • 递归头: 什么时候不调用自身方法。如果没有头,将陷入死循环。
    • 递归体: 什么时候需要调用自身方法。

      案例
public class Demo03 {
public static void main(String[] args) {
int t = factorial(5);
System.out.println(t);
}
// 求一个数的阶乘
public static int factorial(int n){
if (n == 1)
return 1; return n * factorial(n-1);
}
}

注意:计算量小的时候可以选择递归,如果计算量大的话,非常不建议使用递归的方法,我们在这里只是学习递归的思想即可。

06Java基础之方法的更多相关文章

  1. C#基础之方法和参数

    C#基础之方法和参数 接上一篇<C#基础之类型和成员基础以及常量.字段.属性> 实例方法.静态方法 C#中的方法分为两类,一种是属于对象(类型的实例)的,称之为实例方法,另一种是属于类型的 ...

  2. laravel获取当前的url以及当前的基础域名方法汇总

    原文地址:https://phpartisan.cn/news/58.html 来源于:laravel获取当前的url以及当前的基础域名方法汇总 - Laravel学习网 laravel中我们常常需要 ...

  3. 千锋教育Vue组件--vue基础的方法

    课程地址: https://ke.qq.com/course/251029#term_id=100295989 <!DOCTYPE html> <html> <head& ...

  4. SaltStack介绍——SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流

    SaltStack介绍和架构解析 简介 SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流,以毫秒为单位.SaltSta ...

  5. [UWP开发]NavigationView基础使用方法

    原文:[UWP开发]NavigationView基础使用方法 [UWP开发]NavigationView基础使用方法 NavigationView是秋季创意者更新(16299)引入的新控件,用于生成W ...

  6. Scrapy里Selectors 四种基础的方法

    在Scrapy里面,Selectors 有四种基础的方法xpath():返回一系列的selectors,每一个select表示一个xpath参数表达式选择的节点css():返回一系列的selector ...

  7. java在acm中常用基础技巧方法

    java在acm中常用基础技巧方法 如果学到了新的技巧,本博客会更新~ input input-std @Frosero import java.util.*; public class Main { ...

  8. 2019-1-29-Moq基础-判断方法被执行

    title author date CreateTime categories Moq基础 判断方法被执行 lindexi 2019-01-29 16:29:57 +0800 2019-01-17 1 ...

  9. Quartz.Net的基础使用方法,多任务执行继续扩展

    前一篇随笔讲了Quartz多任务的简单实现 Quartz.Net的基础使用方法,多任务执行 这一篇,来简单对前一篇进行一下简单的扩展 看了前一篇的代码会发现,每次新增一个任务还要去GetJobs方法里 ...

  10. Markdown基础使用方法

    Markdown基础使用方法 标题的几种用法 * 选中标题(Ctrl+1~Crtl+6),分别为标题1-6.* #+空格+内容 为一级标题##+空格+内容为二级标题:以此类推. 字体快捷键及使用方法 ...

随机推荐

  1. Flutter跨平台发送系统通知和状态栏通知技术浅析

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  2. WPF 的 FlowDocumentScrollViewer滚动到最底下的方法

    官网上好像并没有直接给相应的接口和方法. 发现一种有效的方法: 先说方法: ScrollViewer sv = flowScrollViewer.Template.FindName("PAR ...

  3. 用python标准库smtplib来发QQ邮件及Django中发送邮件

    1.QQ邮箱设置 点击QQ邮箱账号,进入后,开启smtp服务许可: 点击"生产授权码",在手机上发送相应的短信,得到授权码.[注意授权码之间没有空格] 2.典型代码块   impo ...

  4. java 钉钉群机器人发消息通知工具类

    测测类 /** * 测试钉钉群通知 * * @return */ @GetMapping("/testDingTalk") public Result testDingTalk() ...

  5. python基于正则爬虫-小笔记

    一.re.match(),从字符串的起始位置开始匹配,比如hello,匹配模式第一个字符必须为 h 1.re.match(),模式'^hello.*Demo$',匹配字符串符合正则的所有内容 impo ...

  6. 乒乓球测距(K210)

    测距 说明 识别的物体是乒乓球(规格应该是统一的吧), 硬件是K210,测距的函数经过拟合,在50cm范围内是准确的 如果使用起来不准确,可以打印代码中的LM, 然后去测数据,自己再拟合一个函数,代替 ...

  7. xshell里面实现kafka一对一发送和接收消息测试

    1.连接相关xshell,打开两个窗口一个给生产者用一个给消费者用 在生产者里输入:./kafka-console-producer.sh --broker-list localhost:9092 - ...

  8. 基于混合检索与RRF融合的智能问答系统核心技术解析

    引言 在当今信息爆炸的时代,如何快速.精准地从海量知识中定位用户所需信息,成为智能问答系统面临的核心挑战.GC-QA-RAG系统通过创新的向量检索技术和混合检索机制,实现了高效的知识点定位能力.本文将 ...

  9. layui 父级页面传值给子页面layer.open

    在子页面定义一个方法, 子页面 function child(obj) { } 父级页面 var iframe = window[layero.find('iframe')[0]['name']]; ...

  10. C# DateTime时间戳帮助类型

    https://www.cnblogs.com/minotauros/p/10773258.html /// <summary> /// 时间工具类 /// </summary> ...