前言:
学了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学习笔记(持续更新)