Java——值引用和对象引用

╰半夏微凉° 2024-04-18 21:50 153阅读 0赞

先来看一段代码,猜猜结果是啥:(SonClass中定义了一个public成员变量weight,可通过构造方法赋值)

  1. public static void main(String[] args) {
  2. String str = "12345";
  3. SonClass aa = new SonClass(10);
  4. SonClass bb = new SonClass(12);
  5. Method(str,aa,bb);
  6. System.out.println("str="+str+"\naa="+aa.weight+"\nbb="+bb.weight);
  7. }
  8. public static void Method(String s,SonClass a,SonClass b) {
  9. s = "www.996.com";
  10. a.weight = 999;
  11. b = new sonClass(888);
  12. }

输出:

  1. str=12345
  2. aa=999
  3. bb=12

如果你答对了,也不要高兴,你可能只是感觉上对了,我之前一直以为对象引用和C语言中的指针是一回事,其实不是,他是引用的复制,接下来我们看看他在内存中是怎么存储的吧:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4NjA1MzI4_size_16_color_FFFFFF_t_70

总之你可以这么理解: = 抽象上来说在改变指向,内存中其实是拿到了新的地址。

发表评论

表情:
评论列表 (有 0 条评论,153人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java引用对象

    概述 每种编程语言都有自己操作内存中元素的方式,有时候,程序员必须注意将要处理的数据是什么类型,是直接操纵元素,还是通过某种间接的表示来操纵对象。 在Java里面,这些操纵

    相关 java对象引用

    今天做到一个经典面试题,才发现自已对的java的对象和引用的知识点掌握的并不是很牢固,这篇文章用来复习回顾这些知识。   先看下面的程序, StringBuffer

    相关 Java传递引用传递

    概念 值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,