首页 > 其他分享 >Day03-15 方法

Day03-15 方法

时间:2023-07-12 17:11:08浏览次数:35  
标签:15 num1 num2 Day03 int 参数 result 方法

1、何谓方法?

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

    • 方法是解决一类问题的步骤的有序组合

    • 方法包含于类或对象中

    • 方法在程序中被创建,在其他地方被引用

  • 设计方法的原则方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展。

2、方法的定义

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

    修饰符(public、static) 返回值类型(int、void) 方法名(main、add){
      ...
       方法体
      ...
       return 返回值;
  }
  • 方法包含一个方法头和一个方法体。下面是一个方法的所有部分:

    • 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。

    • 返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。

    • 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。

    • 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。

      • 形式参数:在方法被调用时用于接收外界输入的数据。

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

    • 方法体:方法体包含具体的语句,定义该方法的功能。

public class Demo01 {
   //main方法
   public static void main(String[] args) {
       //实际参数:实际调用传递给他的参数
       int sum = add(1, 2);
       System.out.println(sum);
       //test();
  }

   //加法
   //形式参数,用来定义作用的
   public static int add(int a,int b){
       return a+b;
  }

   public static void test(){
       for (int i = 0;i <= 1000;i++){
           if (i%5 == 0){
               System.out.print(i+"\t");
          }
           if (i%(5*3) == 0){//换行
               System.out.println();
               //System.out.print("\n");
          }
      }
  }
}

3、方法的调用

  • 调用方法:对象名.方法名(实参列表)

  • java支持两种调用方法的方式,根据方法是否返回值来选择。

  • 当方法返回一个值的时候,方法调用通常被当做一个值。例如:

        int larger = max(10, 20);
  • 如果方法返回值是void,方法调用一定是一条语句。

        System.out.println("Hello,wt");
  • 课后拓展了解:值传递(java)和引用传递

    public static void main(String[] args) {
       int max = max(10, 10);
       System.out.println(max);
  }
   //比大小
   public static int max(int num1,int num2){
       int result = 0;

       if (num1 == num2){
           System.out.println("num1 == num2");
           return 0;//终止方法
      }

       if (num1 > num2){
           result = num1;
      }else {
           result = num2;
      }

       return result;
  }

4、方法的重载

  • 重载就是在一个类中,有相同的函数名称,但形参不同的函数。

  • 方法的重载的规则:

    • 方法名称必须相同。

    • 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。

    • 方法的返回类型可以相同也可以不相同。

    • 仅仅返回类型不同不足以成为方法的重载。

  • 实现理论:

    • 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。

    public static void main(String[] args) {
       int max = max(10, 20);
       System.out.println(max);
  }
   //比大小
   public static double max(double num1,double num2){
       double result = 0;

       if (num1 == num2){
           System.out.println("num1 == num2");
           return 0;//终止方法
      }

       if (num1 > num2){
           result = num1;
      }else {
           result = num2;
      }

       return result;
  }
   //比大小
   public static int max(int num1,int num2){
       int result = 0;

       if (num1 == num2){
           System.out.println("num1 == num2");
           return 0;//终止方法
      }

       if (num1 > num2){
           result = num1;
      }else {
           result = num2;
      }

       return result;
  }

5、命令行传递参数

  • 有时候你希望运行一个程序时候再传递给它消息。这要靠传递命令行参数给main()函数实现。

6、可变参数

  • JDK 1.5开始,java支持传递同类型的可变参数给一个方法。

  • 在方法声明中,在指定参数类型后加一个省略号(...)。

  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。

        //调用可变参数的方法
       printMax(34,3,3,2,56.5);
       printMax(new double[]{1,2,3});
  }

   public static void printMax(double...numbers) {
       if (numbers.length == 0){
           System.out.println("No argument passed");
           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);

7、递归

  • A方法调用B方法,我们很容易理解!

  • 递归就是:A方法调用A方法!就是自己调用自己

  • 利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。

  • 递归结构包括两个部分:

    • 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。

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

    //递归思想
   public static void main(String[] args) {
       System.out.println(f(5));
  }

   //1! 1
   //2! 2*1
   //5! 5*4*3*2*1
   public static int f(int n){
       if (n == 1){
           return 1;
      }else {
           return n*f(n-1);
      }
  }
 

标签:15,num1,num2,Day03,int,参数,result,方法
From: https://www.cnblogs.com/Iwtr/p/17548240.html

相关文章

  • StringBuilder()类、chatAt()、toString()方法
    Java1.StringBuffer和StringBuilder类和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。在使用StringBuffer类时,每次都会对StringBuffer对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使......
  • Java复制(拷贝)数组的4种方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRange
    http://c.biancheng.net/view/924.html所谓复制数组,是指将一个数组中的元素在另一个数组中进行复制。本文主要介绍关于 Java 里面的数组复制(拷贝)的几种方式和用法。在Java中实现数组复制分别有以下4种方法:Arrays类的copyOf()方法Arrays类的copyOfRange()方法Syst......
  • python魔术方法之__new__
    一、基本用法#从一个类建立一个对象#__new__从class建立一个object过程#__init__有了object初始化过程classLanguage:def__new__(cls,*args,**kwargs):print("__new__")returnsuper().__new__(cls)def__init__(self):print(......
  • P1531 I Hate It —— 个人思路讲解
    原题链接戳这里初版代码一开始码的是普通暴力因为维护区间内的最大值实在没想到什么好的方法点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineN200005#defineilinline#defineInf0x3f3f3f3fintn,m;inta[N];ilintread(){ intx=0; boo......
  • P2015 二叉苹果树
    原题链接戳这里思考过程一眼树状dp+背包dp每一根树枝占用1空间带来的价值由题目输入设计f[u][i]表示在考虑以u为根的子树时分配给它i根树枝所能达到的最大价值于是在以u为根的子树中想要新拓展一个以v为根的子树时有转移方程f[u][i]=max(f[u][i],f[u][i-k-1......
  • JAVA SE基础《六》---- 方法
    目录一、方法定义、调用1、方法完整的定义形式、调用 2、方法的其他定义形式、调用二、方法使用的常见问题三、方法案例1、定义方法的技巧、计算1-n的和返回2、判断整数是奇数还是偶数3、数组求最值案例改方法实现四、方法调用的内存图五、方法参......
  • Java--next()方法和nextLine()方法的区别
    Java--next()方法和nextLine()方法的区别首先我们来看一下代码:importjava.util.Scanner;publicclassDemo01{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);​System.out.println("请输入:");......
  • 7DGroup性能&测试开发文章持续更新(2019/10/15)
    性能闲谈系列:浅谈window桌面GUI技术及图像渲染性能测试实践杂谈:性能测试的范围到底有多大?戏说CPU使用率-驳《CPU使用率度量指标是扯淡!》译文标题对性能测试评估分析优化市场的反思泛谈系统级跟踪和应用级跟踪性能测试分析优化该有的范围期待996ICU的条款尽早加入到开源协议中!性能基......
  • MyBatis,mapper找不到方法
       项目目录如下,可以看到是接口映射xml文件的mybatis此时运行项目会出现找不到save方法 解决方法:确保接口与xml文件路径一致在xml文件上再建一级mapper,并将其移入其中可  ......
  • Task的基本概念、使用方法和实例代码
    基本概念是一种用于异步编程的概念。Task的重要特点是可以在后台执行方法或操作,而不会阻塞主线程或UI线程。封装的异步操作,表示执行的操作正在进行。可以表示一个方法的返回值或者表示执行的操作已经完成。Task类的主要成员属性:TaskStatus、IsCanceled、IsCompleted、IsFa......