方法的参数传递通常分为两种:值传递和引用传递。
1.传入的是基本类型
如果传入的是基本类型会在栈中分配内存,当按基本类型传递时,实参会多复制一份,因此,在方法内修改参数值时不影响原实参。
示例:基本类型传递
public class Demo1{
static int x = 10;
public static void main(String[] args) {
Demo1 demo = new Demo1();
demo.getX(x);
System.out.println("x="+x); //x=10;
}
public void getX(int x){
x--;
}
}
当方法结束之后,穿入的x值会被垃圾回收,但是在方法内部确实是改变的。
2.引用类型传递
引用类型传递是在栈中声明,在堆中分配内存,列如:
T t; //在栈中声明
t = new T(); //在堆中分配内存
如果没有给对象初始化,会报NullPointerException异常,也就是空指针异常,意思就是对象没有初始化。
当通过“对象名.属性名”实际上就是每一个对应的堆内存空间。