java面向对象——深刻理解方法的参数列表
之前我们学习Java基础知识的时候,就知道了main是一个方法,也是一个程序的入口,同时也了解了什么是参数列表,在重载章节中,我们也深刻了解了参数列表的作用,那是是不是认为你真正的了解了参数列表的含义呢?我们一起来看看吧?
提示:先看完什么是方法参数列表,在看这个,更容易理解!博客地址如下:
https://blog.csdn.net/QZP51ZX/article/details/102493066
5.9根据数据类型的不同,我们将方法的参数列表的使用分为两种:
- 基本数据类型进入方法中参数列表
- 引用数据类型进入方法中参数列表
i.基本数据类型进入方法中参数列表
代码演示:
//分析一个,这两个输出的num分别是多少,它们会不会相等?
public class Test04{
public static void main(String[]args){
//声明一个变量
int num=10;
//调用方法
method(num);
System.out.println("main"+num);
}
public static void method(int num){
num+=10;System.out.println("method"+num);
}
}
//执行结果:
method20
main10
看到结果,有些人就有点蒙了,这是为什么呢?我们通过内存图来分析一下
结论:基本数据类型进入方法之后,方法之间的调用,都是值传递,原来方法中的值不会发生改变,原因是每个方法访问的都是自己的局部变量。
ii.引用类型进入方法参数列表
代码演示:
//分析一个,这两个输出的dog分别是什么?
class Dog{
String name;
String color;
public Dog(){
}
public String toString(){
return"name:"+name+",color:"+color;
}
}
public class Test04{
public static void main(String[] args){
Dog dog=new Dog();
dog.color="屎黃色";
dog.name="旺財";
change(dog);
System.out.println(dog);
}
public static void change(Dog dog){
dog.color="黑色";
dog.name="阿旭";
System.out.println(dog);
}
}
//执行结果:
name:阿旭,color:黑色
name:阿旭,color:黑色
看到结果,有些人就有点蒙了,这是为什么呢?我们通过内存图来分析一下
结论:引用类型进入方法之后,其值会发生改变,原因是由于引用类型传递是地址传递,并不是值传递。