Java基础_0310:引用传递

引用传递

引用传递是Java之中最让初学者费解的概念,而在实际的开发之中,引用传递又有着非常重要的作用;

引用传递的核心在于同一块堆内存空间被不同的栈内存所指向;

范例:第一道引用传递范例

class Message {
    private int num = 10;       // 定义int基本类型的属性
    /**
     * 本类没有提供无参构造方法,而是提供有参构造,可以接收num属性的内容
     * @param num 接收num属性的内容
     */
    public Message(int num) {
        this.num = num; // 为num属性赋值
    }
    public void setNum(int num) {
        this.num = num;
    }
    public int getNum() {
        return this.num;
    }
}
public class TestDemo {
    public static void main(String args[]) {
        Message msg = new Message(30);  // 实例化Message类对象同时传递num属性内容
        fun(msg);       // 引用传递
        System.out.println(msg.getNum());   // 输出num属性内容
    }
    /**
     * 修改Message类中的num属性内容
     * @param temp Message类的引用
     */
    public static void fun(Message temp) {
        temp.setNum(100);       // 修改num属性内容
    }
}

程序执行结果: 100

范例:第二道引用范例

public class TestDemo {
    public static void main(String args[]) {
        String msg = "Hello";       // 定义String类对象
        fun(msg);           // 引用传递
        System.out.println(msg);    // 输出msg对象内容
    }
    public static void fun(String temp) {   // 接收字符串引用
        temp = "World";     // 改变字符串引用
    }
}

程序执行结果:Hello

范例:第三道引用传递

class Message {
    private String info = "此内容无用" ;     // 定义String类型属性
    public Message(String info) {       // 利用构造方法设置info属性内容
        this.info = info ;
    }
    public void setInfo(String info) {
        this.info = info ;
    }
    public String getInfo() {
        return this.info ;
    }
}
public class TestDemo {
    public static void main(String args[]) {
        Message msg = new Message("Hello") ;    // 实例化Message类对象
        fun(msg) ;                              // 引用传递
        System.out.println(msg.getInfo()) ; // 输出info属性内容
    }
    public static void fun(Message temp) {  // 接收Message类引用
        temp.setInfo("World") ;     // 修改info属性内容
    }
}
程序执行结果:World

原文地址:https://www.cnblogs.com/xuwei1/p/8361795.html

时间: 2024-11-08 01:44:50

Java基础_0310:引用传递的相关文章

Java中是引用传递还是值传递?

前言 在学习Java编程语言过程中最容易让你产生误解的问题之一就是 java是值传递还是引用传递.今天就来围绕这个话题揭开迷雾. 概念 首先先来认识一下什么是值传递什么是引用传递. 值传递: 将方法实际参数值复制到另一个变量,然后复制的对象被传递,这就是为什么它被称为"值传递" 引用传递:将实际参数的引用传递给该方法,这就是为什么它被引用称为"传递"的原因. 例子分析1 问题:如果java是使用引用传递的话,为什么在函数中 变量的交换会没有卵用呢? 答案:java通

Java中没有引用传递只有值传递(在函数中)

◆传参的问题 引用类型(在函数调用中)的传参问题,是一个相当扯的问题.有些书上说是传值,有些书上说是传引用.搞得Java程序员都快成神经分裂了.所以,我们最后来谈一下“引用类型参数传递”的问题. 如下例子,假设现在要把刚才创建的那一坨字符串打印出来,我们会使用如下语句: StringBuffer str = new StringBuffer(); System.out.println(str); //这个语句又是什么意思捏?这时候就两说了. 第一种理解:可以认为传进函数的是str这个指针,指针说

关于java中是引用传递还是值传递的问题!!!经常在笔试中遇到,今天终于弄明白了!

关于JAVA中参数传递问题有两种,一种是按值传递(如果是基本类型),另一种是按引用传递(如果是對象).首先以两个例子开始:1)public class Test2 { public static void main (String [] args) { StringBuffer a = new StringBuffer ("A"); StringBuffer b = new StringBuffer ("B"); operate (a,b); System.out.

理解Java中的引用传递和值传递

关于Java传参时是引用传递还是值传递,一直是一个讨论比较多的话题,有论坛说Java中只有值传递,也有些地方说引用传递和值传递都存在,比较容易让人迷惑.关于值传递和引用传递其实需要分情况看待,今天学习和分析一下,着急可以先看最后的结论. >>基本类型和引用类型在内存中的保存 Java中数据类型分为两大类,基本类型和对象类型.相应的,变量也有两种类型:基本类型和引用类型.基本类型的变量保存原始值,即它代表的值就是数值本身:而引用类型的变量保存引用值,"引用值"指向内存空间的地

java中的引用传递(同样适用于JS)

1  java中的数据类型: 有8种基本数据类型,分别为:byte(1),boolean(1),char(2),short(2),int(4),long(8),float(4),double(8)   括号里的数字代表所占的字节数有3种引用类型:类引用,接口引用,数组引用 2  Java中的传递方式:和.址传递. 1)值传递: 比如下列的方法public void add(int a) { int b = a;}这个可以看作是值传递,a是基本数据类型,他把他的值传给了b 2)址传递: publi

(转载)理解Java中的引用传递和值传递

关于Java传参时是引用传递还是值传递,一直是一个讨论比较多的话题,有论坛说Java中只有值传递,也有些地方说引用传递和值传递都存在,比较容易让人迷惑.关于值传递和引用传递其实需要分情况看待,今天学习和分析一下,着急可以先看最后的结论. 1.基本类型和引用类型在内存中的保存 Java中数据类型分为两大类,基本类型和对象类型.相应的,变量也有两种类型:基本类型和引用类型.基本类型的变量保存原始值,即它代表的值就是数值本身:而引用类型的变量保存引用值,"引用值"指向内存空间的地址,代表了某

请注意,java中没有引用传递-----转载

1 说明:本文的适用对象为java初学者.如果有读者发现文章中有叙述不妥之处,请指正. 2 3 今天在论坛上有人提了一个关于java中调用函数时有没有引用传递的问题,可谓是吵的不可开交.有人说java只有值传递,也有人说java既有值传递也有引用传递,那么java中到底有没有引用传递呢,下面我来分析一下. 4 5 一.首先来明确一下"值传递"和"引用传递的"区别 6 7 值传递:是对所传递参数进行一次副本拷贝,对参数的修改只是对副本的修改,函数调用结束,副本丢弃,原

请注意:java中没有引用传递

说明:本文的适用对象为java初学者.如果有读者发现文章中有叙述不妥之处,请指正. 今天在论坛上有人提了一个关于java中调用函数时有没有引用传递的问题,可谓是吵的不可开交.有人说java只有值传递,也有人说java既有值传递也有引用传递,那么java中到底有没有引用传递呢,下面我来分析一下. 一.首先来明确一下"值传递"和"引用传递的"区别 值传递:是对所传递参数进行一次副本拷贝,对参数的修改只是对副本的修改,函数调用结束,副本丢弃,原来的变量不变(即实参不变)引

java 里面的引用传递和值传递问题

1.先从值引用:String a ="God";//a存放在stack 中 God存放在head(堆中)创建了两个对象String b=a;a指向堆中的God对象b=a:说明b也指向了head中的God对象 :b=a 只创建了一个对象b此时进行b="other god" 并不是改变b原有的值,因为String类final 修饰的类,所以在进行赋值的时候就在队中新建了一个 other 对象,然后将b指向other god这个对象. 下面我们进行一个数据交换的操作 pu