zoukankan      html  css  js  c++  java
  • 方法

    方法

    方法概述

    一段具有独立功能的代码块

    必须先创建方法,需要手动调用后才执行

    方法的定义格式

    public static void 方法名( ) {
    
        方法体;   // 方法所包裹的逻辑代码
    }
    

    方法的调用格式

    在main方法中,通过方法名调用

     方法名();
    

    方法的调用过程

    ​ main方法先被调用,随后执行main方法中的逻辑代码,当遇到了调用自定义方法的语句,执行自定义方法内部的逻辑代码,自定义方法执行完毕之后,继续回到main方法中执行

    注意: 方法与方法之间是平级关系, 不能嵌套定义

    形式参数和实际参数

    形参
    全称形式参数,是指方法定义中的参数

    public static void method(int a){
        
    }
    

    实参
    ​ 全称实际参数,方法调用中的参数

    method(10);
    

    带返回值方法定义和调用

    方法的返回值类型,和返回值的关系

    ​ 对应关系,方法的返回值类型,必须跟返回值的类型对应,否则引发编译错误

    返回值的接收

    ​ 带有返回值的方法调用之后,会产生一个运算后的结果,这个结果没有接收被使用的话,这个返回值将毫无意义

    ​ 注意 : 后期有具体返回值的方法, 也可以进行直接调用

    return关键字的作用

    作用1 : 将所在的方法结束

    作用2 : return关键字用于将方法运算的结果,返还给调用处

    方法的通用格式

    public static 返回值类型 方法名(参数){
    
        方法体;
    
        return 数据;
    }
    //如果方法操作完毕,没有数据返回,返回值类型写void,方法体不写return
    
    //void类型的方法,直接调用,
    
    //非void类型的方法,用变量接收调用
    

    定义方法时,要做到两个明确

    明确参数:明确参数的类型数量

    明确返回值类型:明确方法操作完毕之后,是否有数据返回,如果没有,写void;如果有,写对应的数据类型

    方法注意事项

    1. 方法不能嵌套定义

    2. 方法的返回值类型为void,表示该方法没有返回值

    3. return语句下面,不能编写代码,因为永远执行不到,属于无效的代码

    方法重载

    方法重载:在同一个类中方法名相同,参数列表不同,与返回值无关

    参数列表不同:

    ​ 1,类型不同

    ​ 2,个数不同

    ​ 3,顺序不同(毫无意义)

    方法重写:在继承体系中,子类出现了和父类一模一样的方法声明(方法名,参数列表,返回值类型)

    方法参数传递基本类型

    对于基本数据类型的参数,形式参数的改变,不影响实际参数

    public class Test1 {
    //方法参数传递为基本数据类型 :传入方法中的是具体的数值
        public static void main(String[] args) {
            int number = 100;
            System.out.println("调用change方法前:" + number);
            change(number);
            System.out.println("调用change方法后:" + number);
        }
    
        public static void change(int number) {
            number = 200;
        }
    }
    

    原因:每个方法在栈内存中,都会有独立的空间,方法运行结束后就会弹栈消失

    方法参数传递引用类型

    对于引用数据类型的参数,形式参数的改变,影响实际参数

    public class Test2 {
    //方法参数传递为引用数据类型 : 传入方法中的是内存地址           
        public static void main(String[] args) {
            int[] arr = {10, 20, 30};
            System.out.println("调用change方法前:" + arr[1]);
            change(arr);
            System.out.println("调用change方法后:" + arr[1]);
        }
    
        public static void change(int[] arr) {
            arr[1] = 200;
        }
    }
    

    原因:引用数据类型的传参,传入的是地址值(存放在堆内存中),内存中会造成两个引用指向同一个内存的效果,所以即使方法弹栈,堆内存中的数据也已经是改变后的结果

    递归

    public class Recursive {
        public static void main(String[] args) {
           /* for (int i = 0; i <args.length ; i++) {
                System.out.println(args[i]);
            }*/
            System.out.println(f(100));
        }
        private static double f(double n) {
            if (n == 1) {
                return 1;
            } else {
                return n * f(n - 1);
            }
        }
    }
    
  • 相关阅读:
    java微信小程序调用支付接口
    Java开发中的23种设计模式详解(转)
    SSM框架-SpringMVC 实例文件上传下载
    设计模式--观察者模式
    设计模式之策略模式
    网络通讯简单了解
    android 五子棋开发
    android studio里的build.gradle基本属性
    android studio 真机调试
    java线程知识点
  • 原文地址:https://www.cnblogs.com/tyrion4396/p/13375122.html
Copyright © 2011-2022 走看看