zoukankan      html  css  js  c++  java
  • [JAVA]对象的别名问题

    对于JAVA的基本数据类型,a=b就是把b的内容复制给a。若接着又修改了a,对b是没有影响的。

    但是在为对象“赋值”的时候,情况发生了变化。对一个对象进行操作时,我们真正操作的是对象的引用。

    下面对两种情况下的别名问题进行说名:

    1、对象赋值引发的别名问题

    示例代码:

    class Range{
        int level;
    }
    
    public class Assignment{
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            Range r1 = new Range();
            Range r2 = new Range();
            r1.level = 1;
            r2.level = 2;
            //打印对象赋值前的r1.level和r2.level
            System.out.println("r1:"+r1.level+",r2:"+r2.level);
    
            r1 = r2;
            //打印对象赋值后的r1.level和r2.level
            System.out.println("r1:"+r1.level+",r2:"+r2.level);
    
        }
    }

    输出结果:

    r1:1,r2:2
    r1:2,r2:2

    2、将对象作为参数传递给方法  产生的别名问题

    示例代码:

    class Letter{
        char c;
    }
    
    public class PassObject {
        static void Func(Letter l) {
            l.c = 'z';
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //System.getProperties().list(System.out);
            Letter l1 = new Letter();
            l1.c = 'a';
            //函数调用之前
            System.out.println("1、1.c:"+l1.c);
            
            Func(l1);
            //调用func之后
            System.out.println("2、1.c:"+l1.c);
    
        }
    }

    输出结果:

    1、1.c:a
    2、1.c:z

  • 相关阅读:
    5.数组的使用,最值和反转
    4.下标越界及小结
    3.数组的三种初始化及简单内存分析
    html5版 音乐播放器
    百度网盘搜索
    HTML5扩展之微数据与丰富网页摘要
    Java 学习文章汇总
    业余草
    Catalan数
    Luogu P3004 [USACO10DEC]宝箱Treasure Chest
  • 原文地址:https://www.cnblogs.com/zhengxl5566/p/9641727.html
Copyright © 2011-2022 走看看