java的参数传递机制概述,方法重载概述,以及相关案例

发布时间:2024年01月01日

前言:

学了Java的传递机制,稍微记录一下。循循渐进,daydayup!

?java的参数传递机制概述

1,java的参数传递机制是什么?

java的参数传递机制是一种值传递机制。

2,值传递是什么?

值传递指的是,传输实参给方法形参的时候,实参存储的值的副本。

3,实参/形参是什么?

实参指的是在方法内部定义的变量。形参指的是方法定义的变量。如下图:

基本类型和引用类型的参数在传递时有什么不同?

1,基本类型的参数传递

基本类型的参数传递是一种值传递,参数储存的是数据值

例:如图代码

  public static void main(String[] args) {

        int q =10;//
        laal(q);
        System.out.println("main"+q);
    }
    public static void laal(int q){
        System.out.println("一次"+ q);
        q = 20;
        System.out.println("二次"+ q);
    }

结果如下:即使在方法里q赋值成了20,在main里q依旧输出10;

2,引用类型的参数传递

?引用类型的参数传递同样是一种值传递,参数储存的是地址值

?例:如图代码

 public static void main(String[] args) {
        int [] lala = {1,2,3,4,5};
        la( lala);
        System.out.println("main"+lala [1]);
    }
  public static void la(int [] lala){
      System.out.println("第一次"+lala[1]);
        lala [1] = 20;
      System.out.println("第二次"+lala[1]);

  }

结果如下:当方法中数组里的数改变后,main中也随之改变(因为参数记录的是地址值,并不影响引用数值的改变)

?方法重载

1,什么是方法重载?

一个类中,多个方法的名称相同,但他们的形参列表不同

2,方法重载需要注意什么?

一个类中,只要一些方法的名称相同,形参列表不同(形参的个数,类型,顺序不同),那就是重载了

3,重载的应用场合是什么?

一类业务需要多种解决方案时(此时用方法重载特别专业)?

例:如图代码

 public static void lala(){}
 public static int lala(int a){ return a;}
 public static int lala(int a,int b){return a +b ;}

?

综合案例

案例1,用方法,把数组{1,2,3,4,5}按照[1|2|3|4|5]格式输出

public class definedemo3 {

    public static void main(String[] args) {
        int [] lol = {1,2,3,4,5};
        lala(lol);

    }
    public static void lala(int [] lol){
        if(lol == null){
            System.out.println("null");
            return;//以防是null
        }
        System.out.print("[");//添加[
        for (int i = 0; i < lol.length; i++) {//使数组循环输出
            System.out.print(i == lol.length - 1 ? lol[i]:lol[i]+"|");

        }//判断i是否等于数组最大长度,如果是则不输出|
        System.out.println("]");//加上]

    }
}

实验结果:

?

案例2:两个数组对比,如果一致,输出true

实验思路:判断两个是否null;再判断两个长度是否一样;再判断两个数是否相同;

  public static void main(String[] args) {
        int[] q1 = {1,2,3};
        int[] q2 = {1,2,3};
        System.out.println(lala(q1,q2));

    }
    public static boolean lala(int [] q1,int [] q2){
        if (q1 == null && q2 == null){
            return  true;
        }
        if (q1 == null || q2 ==null){
            return false;
        }
        if (q1.length != q2.length){
            return false;
        }
        for (int i = 0; i < q1.length; i++) {
            if (q1[i] != q2[i]){
                return  false;
            }
        }
        return true;
    }

实验结果:实验成功,一致输出true,不一致输出false

案例3 :设计两个模式,模式1为发射导弹;模式2为向指定地区发射导弹

public class overloaddemo1 {
    public static void main(String[] args) {
        fire(1);
        fire("哈哈国",1);
    }
    public static void fire(int a){
        System.out.println(a);
    }
    public static void fire(String con,int a  ){

        System.out.println("向"+con+"发射"+ a+"枚导弹");

    }
}

实验结果:模式1为发射一枚导弹,模式2为向哈哈国发射1枚导弹

今日结束!

---------------------------------------------------------------------------------------------------------------------------------

最后

如果您看到了这篇文章,同时您也在学习java,希望您阅读这篇文章,希望与您一起讨论

基于黑马程序员的java学习笔记(持续更新)

?

文章来源:https://blog.csdn.net/l822099133/article/details/135318798
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。