Java方法

一、方法的概念及使用 

(一)、什么是方法

许多程序设计语言(像C和C++)用函数这个术语来描述命名子程序,而在Java里却常用方法这个术语来表示“做某些事情的方式”。实际上,继续把他看作函数也无妨,尽管这只是用词上的差别,但是我们还是沿用Java的惯用法,即用术语“方法”

(二)、方法存在的意义 

1、是能够模块化的组织代码(当代码规模比较复杂的时候)

2、做到代码被重复使用,一份代码可以在多个位置使用

3、让代码更好理解更简单

4、直接调用现有方法,不必重复

(三)、方法的定义

1、基本语法

 2、注意事项

(1)、在现阶段,方法的修饰采用----->public static 固定搭配

(2)、[ ]内部的表示可有可无

(3)、方法必须定义在类中

(4)、 方法定义时, 参数可以没有,如果需要每个参数要指定类型

(5)、方法定义时, 返回值也可以没有,比如main方法,如果没有返回值, 则返回值类型必须写成 void

(6)、 方法定义不能嵌套

(7)、 方法定义时的参数称为 "形参", 方法调用时的参数称为 "实参"

(8)、 方法必须定义在类之中, 方法定义的位置在调用位置的上方或者下方均可

(9)、 Java 中没有 "函数声明" 这样的概念.

3、代码示例

(1)、实现一个函数,检测一个年份是否为闰年

 public static boolean isLeapYear(int year) {
       if ((0 == year % 4 && 0 != year % 100) || year % 400 == 0) {
           return true;
       }else{
           return false;
       }
   }

    public static void main(String[] args) {
        int year=2001;
        boolean isLeap= isLeapYear(year);
        System.out.println(isLeap);
    }

(2)、 实现一个两个整数相加的方法

 public static void main(String[] args) {
        int a=10;
        int b=20;
        int num=add(a,b);
        System.out.println("num="+num);
    }
    public static int add(int x,int y){
        return x+y;
    }

(四)、方法调用的执行过程

1、方法调用过程

(1)、过程

调用方法--->传递参数--->找到方法地址--->执行被调方法的方法体--->被调方法结束返回--->回到主调方法继续往下执行

(2)、图解

 (3)、代码示例1(计算两个整数相加) 

public static void main(String[] args) {
        int a =10;
        int b=20;
        System.out.println("第一次调用方法之前");
        int ret=add(a,b);
        System.out.println("第一次调用方法之后");
        System.out.println("ret="+ret);

        System.out.println("第二次调用方法之前");
         ret=add(30,50);
        System.out.println("第二次调用方法之后");
        System.out.println("ret="+ret);
    }
    public static int add(int x,int y){
        System.out.println("调用方法中 x = " + x +  " y = " + y);
        return x+y;
    }

(4)、代码示例2( 1! + 2! + 3! + 4! + 5!)

public static void main(String[] args) {
        int sum=0;
       for (int i=1;i<=5;i++){
           sum +=fac(i);
       }
    }
    public static int fac(int n){
        System.out.println("计算 n 的阶乘中n! = " + n);
        int result=1;
        for (int i=1;i<=n;i++){
            result *=i;
        }
        return result;
    }

(五)、实参和形参的关系

1、形参

Java中方法的形参就相当于sum函数中的自变量n,用来接收sum函数在调用时传递的值的。形参的名字可以随意取,对方法都没有任何影响,形参只是方法在定义时需要借助的一个变量,用来保存方法在调用时传递过来的值。

2、实参

实际参数。

注意:在Java中,实参的值永远都是拷贝到形参中,形参和实参本质是两个实体

3、栈帧

(1)、每个方法在运行时,必须要有自己的运行环境,该运行环境的专业术语:栈帧。

(2)、栈帧实际是一个数据结构,将方法运行时所需要的一些与该方法相关的信息组织起来---比比如:形参、局部变量等。

(3)、栈帧随着方法·的执行而创建,随着方法的结束而销毁,栈帧一生与方法的一生时一样的。

4、图解

5、代码示例

 public static void swap(int a,int b){
        System.out.println("swap交换前:");
        System.out.println("a="+a);
        System.out.println("b="+b);
        int temp =a;
        a=b;
        b=temp;
        System.out.println("---------------");
        System.out.println("swap交换后:");
        System.out.println("a="+a);
        System.out.println("b="+b);
        System.out.println("---------------");
    }

    public static void main(String[] args) {
        int left=10;
        int right=20;
        System.out.println("---------------");
        System.out.println("main交换前");
        System.out.println("left="+left);
        System.out.println("right="+right);
        System.out.println("---------------");
        swap(left,right);
        System.out.println("main交换后:");
        System.out.println("left="+left);
        System.out.println("right="+right);
    }

 6、运行结果

 7、存在问题(为什么main交换后数字不改变)

(1)、动态图解(栈帧1为交换前,栈帧2为交换后)

 (2)、静态图解

 (六)、没有返回值的方法

方法的返回值是可选的. 有些时候可以没有的,没有时返回值类型必须写成void

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值