传值传引用

【传值传引用】

【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);        
        
    }

}

【输出结果】

猜你喜欢

转载自www.cnblogs.com/runzhizhang/p/10834689.html