码迷,mamicode.com
首页 > 其他好文 > 详细

传值传引用

时间:2019-05-08 21:41:43      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:[]   student   传值   float   图片   OLE   多少   ring   地址   

【传值传引用】

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

}

【输出结果】

技术图片

 

传值传引用

标签:[]   student   传值   float   图片   OLE   多少   ring   地址   

原文地址:https://www.cnblogs.com/runzhizhang/p/10834689.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!