传值传引用
【传值传引用】
【1.栈&堆】
< 栈>
(1)Java的堆是一个运行时数据区,类的对象从堆中分配空间,这些对象通过new等指令建立。
(2)堆内存空间是在运行时动态分配的。但由于需要在运行时动态分配内存,所以存取速度较慢。
<堆>
(1)栈中主要存放一些基本数据类型的变量(byte,short,int,long,float,double,boolean,char)和对象的引用。
(2)栈的存取速度比堆快,栈数据可以共享。但存放在栈中的数据占用多少内存空间需要在编译时确定下来,缺乏灵活性。
【2.引用类型&基本类型】
<引用类型>
类名 对象名 = new 类名();
( 类名 对象名; // 新建对象名,存在栈中
对象名 = new 类名();) // 用new 在堆中为对象分配存储空间,并将地址赋给对象
对象名.属性 // 利用地址调用对象存储空间内的属性
<基本类型>
int , long , short , float , double , char , boolean , byte // 栈中
【程序】
public class student { String name; public void changename(student st){ st.name = "张三"; } public void changeage(int a){ a = 20; } public static void main(String[] args){ student stu = new student(); stu.name = "李四"; System.out.println(stu.name); stu.changename(stu); //在栈中新建一个对象名st,并将stu的地址赋给st,st通过地址访问修改stu空间内属性 System.out.println(stu.name); // stu空间内属性被修改 int age = 10; // age = 10存储在栈中 System.out.println(age); stu.changeage(age); // 在栈中新建a,并将age值传递给a,a的值被修改,age的值未变 System.out.println(age); } }
【输出结果】