参数传递
package com.mgg.review;
/**
*参数传递分为两种
* 1、基本类型参数传递
* 2、对象类型参数传递
*/
public class Demo7_PassParameter {
public static void main(String[] args) {
Demo7_PassParameter d = new Demo7_PassParameter();
//基本类型
//大致过程可以这样理解:当创建了变量a时,在内存中开辟了一个空间来存储变量a的值“1”
//当把a传到change_1中时,参数x在内存中又开辟了一个空间来存储传过来值“1”,这样的话参数x和变量a相当于两个没啥关系的东西
//他们唯一的一个关系就是a把值“1”给了x,over
//用一种比较容易理解的方式吧:int a = 1;(现在定义了变量a) int x; x=a;(然后把a的值给了x),end
int a = 1;
d.change_1(a);
System.out.println("此时a的值为"+a);
//对象类型
//对象类型其实跟基本类型原理差不多,但是区别在于,基本类型开辟的空间里面存储的是一个值,一个实际的值
//虽然对象类型开辟的空间中存储的也是“值”,但是这个“值”不是实际的值,而是另外一个空间的地址,类似c中的指针吧
//真正的值存储在“值”所指向的空间,而s和x改变的都是“值”所指向的空间的值,而s和x的“值”是都没变的
//所以对“值”指向的空间的值做出最后改变的x决定了输出的值
//如果令change_2中的x=new xxx();那么这时候x所指向的“值”就发生了变化,再做x=“嘿嘿”的时候是不会改变s的值的
//文中所说的第一个空间指:栈,空间中的地址指向的空间指的是:堆
//相信学习过数据结构的朋友应该对此是有所理解的
String[] s = new String[]{"Hello World!"};
d.change_2(s);
System.out.println("此时s的值为"+s[0]);
}
public void change_1 (int x) {
x=990;
}
public void change_2 (String[] x) {
x[0]="再见!";
}
}