第2.6章:方法的定义与使用

方法的基本概念

方法的主要功能是封装可以执行的一段代码,这样不仅可以进行重复调用,更可以方便的实现代码的维护,而本次使用的方法定义语法如下所示。

public static 返回值类型 方法名称(参数类型 参数变量, ...) {
    方法体(本方法要执行的若干操作) ;
    [return [返回值] ;]
}

在本定义格式之中,发现方法有一个返回值类型,指的是这个方法返回结果,对于此类的类型可以有两种:

直接设置Java中的数据类型(基本数据类型、引用数据类型),

  • 如果方法设置了返回值,那么必须使用return语句返回与之数据类型对应的数据;
  • 方法没有返回值:void,可以不使用return返回内容,但是可以使用return结束方法调用。
定义一个没有参数没有返回值的方法
public class TestDemo {
    public static void main(String args[]) {
        printInfo();        // 直接调用方法
        printInfo();        // 直接调用方法
    }
    /**
     * 信息输出操作
     */
    public static void printInfo() {    // 定义没有参数,没有返回值的方法
        System.out.println("*********************");
        System.out.println("*   www.yootk.com   *");
        System.out.println("*********************");
    }
}

程序执行结果:
*********************
*   www.yootk.com   *
*********************
*********************
*   www.yootk.com   *
*********************
定义一个有参数无返回值的方法

public class TestDemo {
    public static void main(String args[]) {
        pay(10.0);          // 调用方法
        pay(-10.0);         // 调用方法
    }
    /**
     * 定义一个支付的操作方法,如果支付金额大于0则正常支付,否则会输出错误提示信息
     * @param money 要支付的金额
     */
    public static void pay(double money) {  // 购买支付操作
        if (money > 0.0) {  // 现在已经给钱
            System.out.println("可以进行支付!");
        } else {        // 不能够支付
            System.out.println("你穷疯了,没钱还买东西!");
        }
    }
}
程序执行结果: 可以进行支付!(“pay(10.0)”调用执行)
你穷疯了,没钱还买东西!(“pay(-10.0)”调用执行)
定义有返回值有参数的方法
public class TestDemo {
    public static void main(String args[]) {
        int result = add(10, 20);       // 方法的返回值可以进行接收
        System.out.println("计算结果:" + result);
        System.out.println("计算结果:" + add(50, 60));  // 也可以直接将方法返回值进行输出
    }
    /**
     * 实现数据的加法操作
     * @param x 操作数字一
     * @param y 操作数字二
     * @return 返回两个数字的加法计算结果
     */
    public static int add(int x, int y) {   // 有参数有返回值的方法
        return x + y;       // 返回加法计算结果
    }
}

程序执行结果:
计算结果:30
计算结果:110
利用return结束方法调用

如果在方法中执行return语句,那么就表示其之后的代码不再执行而直接结束方法调用,如果此时方法有返回值声明,那么必须返回相应类型的数据,如果没有返回值声明,则可以直接编写return。而此类操作一般都会结合分支判断一起使用。

public class TestDemo {
    public static void main(String args[]) {
        set(100);           // 正常执行输出
        set(3);         // 满足方法判断条件,会中断输出操作
        set(10);            // 正常执行输出
    }
    /**
     * 定义一个设置数据的操作方法,如果该数据为3将无法设置
     * @param x 要设置的数据内容
     */
    public static void set(int x) { // 方法声明为void
        if (x == 3) {   // 判断语句
            return;     // 方法后面的内容不执行了
        }
        System.out.println("x = " + x);
    }
}
程序执行结果:
x = 100
x = 10

方法的重载

方法重载指的是方法名称相同,参数的类型或个数不同,调用的时候将会按照传递的参数类型和个数完成不同的方法体的执行。

如果说现在有一个方法名称,有可能要执行多项操作,例如:一个add()方法,它可能执行两个整数的相加,也可能执行三个整数的相加,或者可能执行两个小数的相加,那么在这样的情况,很明显,一个方法体肯定无法满足于要求,需要为add()方法定义多个不同的功能实现,所以此时就需要方法重载概念的支持。

观察方法重载
public class TestDemo {
    public static void main(String args[]) {
        // 方法重载之后执行时会根据传入参数的类型或个数的不同调用不同的方法体
        System.out.println("两个整型参数:" + add(10, 20));
        System.out.println("三个整型参数:" + add(10, 20, 30));
        System.out.println("两个浮点型参数:" + add(10.2, 20.3));
    }
    public static int add(int x, int y) {   // add()方法一共被重载三次
        return x + y;
    }
    public static int add(int x, int y, int z) {    // 与之前的add()方法的参数个数不一样
        return x + y + z;
    }
    public static double add(double x, double y) {  // 与之前的add()方法的参数类型不一样
        return x + y;
    }
}

方法的递归调用

递归调用是一种特殊的调用形式,指的是方法自己调用自己的形式,但是在进行递归操作的时候必须满足如下的几个条件:

  • 必须有结束条件;
  • 每次调用的时候都需要改变传递的参数。
    public class TestDemo {
    public static void main(String args[]) {
        System.out.println(sum(100));   // 1 - 100累加
    }
    /**
     * 数据的累加操作,传入一个数据累加操作的最大值,而后每次进行数据的递减,将一直累加到计算数据为1
     * @param num 要进行累加的操作
     * @return 数据的累加结果
     */
    public static int sum(int num) {    // 最大的内容
        if (num == 1) {         // 递归的结束调用
            return 1;       // 最终的结果返回了一个1
        }
        return num + sum(num - 1);  // 递归调用
    }
    }
    程序执行结果:
    5050

原文地址:https://www.cnblogs.com/xuwei1/p/8338349.html

时间: 2024-08-29 18:16:46

第2.6章:方法的定义与使用的相关文章

java 第五章 方法定义及调用

1.方法的定义 什么是方法 方法是完成某个功能的一组语句,通常将常用的功能写成一个方法 方法的定义 [访问控制符] [修饰符] 返回值类型 方法名( (参数类型 形式参数, ,参数类型 形式参数, ,-) ) { 方法体 } 修饰符:public .static 被称为修饰符(后续会详细讲解它们): 返回值类型:用来说明该方法运算结果的类型.如果返回其他类型,编译就可能出错: 方法名:它作为调用时引用方法的标识: 参数列表:方法的参数个数可以是0个到多个,每个参数前面要声明参数的数据类型:每个参

[Effective Java]第七章 方法

第七章      方法 38.      检查参数的有效性 绝大多数方法和构造器对于传递给它们的参数值都会有某些限制.例如,索引值必须是非负的,对象引用不能为null等,这些都是常见的.你应该在文档中清楚地指明所有这些限制,并且在方法体的开头处检查参数,以强制施加这些限制. 应该在方法和构造器体前进行了参数的有效性检查,并且及时向外抛出适当的异常.如果方法没有检查它的参数,就有可能发生几种情形.该方法可能在处理过程中失败,并且产生令人费解的异常,更有可能,该方法可以正常返回,但是会悄悄地计算出错

Scala 函数和方法的定义与使用

摘要: 函数是一组一起执行一个任务的语句. 您可以把代码划分到不同的函数中.如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的. Scala 有函数和方法,二者在语义上的区别很小.Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量.换句话来说在类中定义的函数即是方法. 我们可以在任何地方定义函数,甚至可以在函数内定义函数(内嵌函数).更重要的一点是 Scala 函数名可以有以下特殊字符:+, ++, ~, &,-, -- , \,

override(重写,覆盖) 1、方法名、参数、返回值相同。 2、子类方法不能缩小父类方法的访问权限。 3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。 4、存在于父类和子类之间。 5、方法被定义为final不能被重写。 overload(重载,过载) 1、参数类型、个数、顺序至少有一个不相同。 2、不能重载只有返回值不同的方法名。 3、存在于父类和子

override(重写,覆盖) 1.方法名.参数.返回值相同. 2.子类方法不能缩小父类方法的访问权限. 3.子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常). 4.存在于父类和子类之间. 5.方法被定义为final不能被重写. overload(重载,过载) 1.参数类型.个数.顺序至少有一个不相同.   2.不能重载只有返回值不同的方法名. 3.存在于父类和子类.同类中. 方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现. 重写(O

clearInterval()方法的定义和用法

clearInterval()方法的定义和用法:此方法能够取消setInterval()方法设置的定时器.此方的参数必须是要取消的相应的setInerval()方法的返回值.点击可参阅更多window对象的属性和方法.语法结构: clearInterval(id) 参数列表: id:必需.此id是setInerval()的返回值,是此setInerval()方法的唯一标识. 浏览器支持:1.IE浏览器支持此属性.2.Firefox浏览器支持此属性.3.Opera浏览器支持此属性.4.chrome

22.java方法的定义

java中的方法:就相当于c语言中的函数:sun在开发java的时候,为提高其代码的重复利用率,引入了方法. 什么是方法? 方法就是一段代码片段,这个片段可以完成特定的功能,并且可以重复利用. 从入口程序那里开始调用,一掉就开始执行指定的方法. 定义方法的语法: [方法的修饰符列表] 方法的返回值类型 方法名{ java语句; } 注意:[]括号里面的可以有也可以没有,但是不在[]里面的一定的有. 1)[方法的修饰符列表]是可选项,现在暂时先写成:public static 2)方法的返回值类型

《深入Java虚拟机学习笔记》- 第19章 方法的调用与返回

<深入Java虚拟机学习笔记>- 第19章 方法的调用与返回

java中方法的定义

java中方法的定义: [修饰符]   [修饰符]   [返回值类型] 方法名字 [形参列表] //带[]的可以省略,返回值类型不能省略. 就拿main方法来说,public         static       void       main (String[] args){ 方法体: return 返回值://返回值要与返回值类型相匹配.没有返回值的话,返回值类型用void; } 方法的定义:为了完成某项功能,封装的一系列代码的集合: 方法的调用:同一个类中可以直接用方法名():调用:但

在主方法中定义一个大小为50的一维整型数组,数组i名为x,数组中存放着{1,3,5,…,99}输出这个数组中的所有元素,每输出十个换一行

package hanqi; import java.util.Scanner; public class Test7 { public static void main(String[] args) { //在主方法中定义一个大小为50的一维整型数组,数组i名为x,数组中存放着{1,3,5,…,99}输出这个数组中的所有元素,每输出十个换一行 int [] x=new int[50]; int a =1; for(int i=0;i<50;i++) { x[i]=a; a+=2; } for(

在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。

//在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’:输出这个数组中的所有元素. char [][]y=new char [10][10]; for(int i=0;i<10;i++) { for(int j=0;j<10;j++) { if(i==j||i+j==9) { y[i][j]='*'; } else { y[i][j]='#'; } } } for(int i =0;i<10;i++) { for(int k