zoukankan      html  css  js  c++  java
  • 方法 —— 参数传递、重载、命令行参数与可变参数

    一、方法的参数传递机制

      方法的参数传递机制:把实参传递给形参。 (实参-->形参)

      1、基本数据类型形参

        结论:形参是基本数据类型,实参给形参传的是“数据值”,形参值得修改不会影响实参。因为实参是“copy 复制”了一份数据值给形参。

        图解:

        

         注意:栈中的内存区域是按照方法来划分的,方法被执行时,就会给这个方法单独分配一块区域。执行完毕后,就会作为垃圾被回收。

      2、引用数据类型形参

        结论:形参是引用数据类型,实参给形参传的是“地址值”,形参对象的属性值修改会影响实参对象的属性值。

        图解:

                   

    二、方法重载 

      1、方法重载(overload)

        方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与 修饰符 和 返回值类型 无关。

        参数列表:个数不同,数据类型不同,顺序不同;

        重载方法调用:JVM 通过方法的参数列表,调用不同的方法

      2、方法重载与下列因素相关

      •    参数个数不同;
      •    参数类型不同;
      •    参数的多类型顺序不同;

      3、方法重载与下列因素无关

      •  与参数的名称无关;
      •     与方法的返回值类型无关;

    三、命令行参数

      命令行参数:给 main 方法传递的实参,叫做命令行参数。

      因为 main 方法也是一个有参无返回值的方法,那么如果给 main 方法传参数呢?

      语法格式:

    java  main所在的类名 实参1  实参2 .....
    

     

    四、可变参数(JDK1.5以后引入)

      可变参数:形参列表中出现了“数据类型... 形参名”形式的形参,就是可变参数。

      包含可变参数的方法的调用原则:

       (1)可变参数的形参部分,可以传入0~n个对应类型的实参,也可以传入对应类型的数组对象

       (2)非可变参数的形参部分,原来该怎么传,现在还怎么传

      可变参数的声明的原则:

       (1)一个方法只能包含一个可变参数

       (2)可变参数必须是形参列表的最后一个

      需求一:求0~n个整数的累加和。

      方式一:

    1 public static int sum(int[] nums){
    2     int sum = 0; 
    3     for(int i=0; i<nums.length; i++){
    4         sum += nums[i];
    5     }
    6     return sum;
    7 }

       缺点:每次传入参数的时候必须要声明一个数组,不够方便。

       方式二:

    1 public static int sum(int... nums){
    2     //nums当成数组用
    3     int sum = 0; 
    4     for(int i=0; i<nums.length; i++){
    5         sum += nums[i];
    6     }
    7     return sum;
    8 }

      作为可变参数使用,更加的灵活了,其实nums还是相等于一个数组。但是不能与上面的方式一同时声明使用。

        需求二:声明一个方法,功能:可以求1~n个整数的最大值

    1 public static int max(int num1, int... nums){
    2     int max = num1;
    3     for(int i=0; i<nums.length; i++){
    4         if(nums[i] > max){
    5             max = nums[i];
    6         }
    7     }
    8     return max;
    9 }

      注意:int num1就是非可变参数部分,必须传入值;int... nums 是可变参数,而且,可变参数必须是形参列表的最后一个。 

  • 相关阅读:
    JS函数浅析(一)
    H5_canvas与svg
    h5+js视频播放器控件
    【BZOJ3622】已经没有什么好害怕的了
    【9.29 模拟】T3 小清新最优化(easy)
    9.27模拟
    9.26 模拟
    4062 -- 【清华集训2012】串珠子
    【SNOI2017】炸弹
    P3216 [HNOI2011]数学作业
  • 原文地址:https://www.cnblogs.com/niujifei/p/11870712.html
Copyright © 2011-2022 走看看