zoukankan      html  css  js  c++  java
  • 其中假如把类b换成String,则s不会随着s1的改变而改变,为什么??

    public class b{
        private String s;
        public b(String s){this.s=s;}
        public String getS(){return s;}
        public void setS(String s){this.s=s;}
    }

    public class a{
        private b s;
        public void setS(b s){this.s=s;}
        public b getS(){return s;}
        public void change(){s.setS("defgh");}    

        public static void main(String[] args){
            b s=new b("abc");
            b s1=new b("aaaaa");
            a ab=new a();
            ab.setS(s);
            ab.change();
            s1=ab.getS();
            System.out.println("s:"+s.getS());
            System.out.println("s1:"+s1.getS());
            System.out.println("s.equals(s1):"+s.equals(s1));        
        }
    }

    其运行结果如下

    但是把类b换成String,则s不会随着s1的改变而改变,其运行结果如下

    为什么呢??

    是否String通过形参赋在类a中的s后是分配另一个内存空间,而不是两个变量引用同一个内存空间呢??

  • 相关阅读:
    包含min函数的栈
    量化交易系统的四个组成部分
    顺时针打印矩阵
    python正则表达式中re.M,re.S,re.I的作用
    二叉树的镜像
    树的子结构
    合并两个排序的链表
    反转链表
    命名元祖
    二叉树(二叉搜索树-AVL树-B树)
  • 原文地址:https://www.cnblogs.com/heysong/p/3747643.html
Copyright © 2011-2022 走看看