传值传引用

【传值传引用】

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

    }

}

【输出结果】

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

时间: 2024-10-21 00:49:47

传值传引用的相关文章

调用同事函数引发的坑--------python 传值引用和传参引用

调用同事的函数,传入goods_list,获取商品信息,然后将商品信息与goods_list的信息进行匹配,合并. 但是同事返回数据的同时改变了我传入的参数,goods_list.相当于传参引用,也就是在内存中相同的地址进行更改数据, 将我传入的参数goods_list 进行覆盖.导致我的参数不能匹配. 特此记录: 先看一个例子 t_list = [1, 2]t_dict = {"a":"haha", "b":"hehe"}t

不通过传值传指针传引用而实现形参修改实参的值

1.首先了解一下堆栈帧的创建步骤(来自<32位汇编语言程序设计>钱晓捷一书): 1)主程序把传递的参数压入堆栈: 2)调用子程序时,返回地址压入堆栈: 3)子程序中,EBP压入堆栈:设置EBP等于ESP,通过EBP访问参数和局部变量: 4)子程序有局部变量,ESP减去一个数值,在堆栈预留局部变量使用的空间: 5)子程序要保护的寄存器压入堆栈. 如下图: 2.了解了堆栈帧之后,就可以得出以下程序: 1)嵌入汇编实现 #include<iostream> using namespace

传指针和传指针引用的区别/指针和引用的区别(本质)

转自:http://blog.sina.com.cn/s/blog_673ef8130100imsp.html 指针传递参数本质上是值传递的方式,它所传递的是一个地址值.值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本.值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值.(这里是在说实参指针本身的地址值不会变) 而在引用传递过程中,被调函数的形式参数虽然也作为局

传值传址。以及结构体的知识点 例题

一传值 传值:将变量名中存放的值进行传输 传值        public void Hanshu(int a)        {            a += 10;                    } 主函数里写 Program hanshu = new Program(); hanshu.Hanshu(a); _______________________________________________________________________________________

intent传值传对象跳转

1.传值 //原activity中存入一个字段 intent = new Intent(From.this, To.class); intent.putExtra("switch", "chongzhi"); startActivity(intent); //跳转至新的activity中后q取出该字段 Intent switchIntent = getIntent(); String myswitch = switchIntent.getStringExtra(&q

传值传址 结构体

传值 class Program { //传值 public void hs(int a,int b) { b = a + 10; } } static void Main(string[] args) { Program hanshu = new Program(); //传值:将变量名中存放的值进行传输 int x = 5; int y = 10; hanshu.hs(x,y); Console.WriteLine(y); }结果为10 传址class Program { //out 传址

C# 页面之间传值传参的6种方法

一.QueryString传值: QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.在传递一个或多个安全性要求不高或是结构简单的值时,可以使用这个方法.但是对于传递数组或对象的话,就不能用这个方法.如下段代码: a.aspx中的代码private void Button1_Click(object sender, System.EventArgs e) { string s_url; s_url = "b.aspx?name=" + Label1.

一篇笔记整理JVM工作原理

前言: 想提高Java开发,了解jvm是必不可少的.它让开发者了解他们的代码,jvm是如何变异与运行.深入了解jvm:会让你的代码写的高效,逐步成为大神 下面介绍jvm的基本知识 >>数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型. 基本类型的变量保存原始值,即:他代表的值就是数值本身:而引用类型的变量保存引用值. "引用值"代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置. 基本类型包括:byte,boolean(1

JAVA程序设计&lt;5&gt;

1.Java程序设计基本概念 1.1 JVM ClassLoader(类加载器):每一个java文件都对应一个java类,根据程序需要逐渐载入内存.(一般ExtClassLoader加载java的扩展API即/lib/ext中的类,APPClassLoader用来加载用户机器上的CLASSPATH设置的目录中的class). ClassLoader加载流程:当程序运行时,JVM启动,运行 bootstrap classloader(启动类加载器),该ClassLoader加载Java核心API(