【问题标题】:this in java class (pointers)JAVA这个在java类(指针)JAVA
【发布时间】:2017-03-26 13:41:22
【问题描述】:
public class Try {
    String name="";
    int age=13;
    public void changer(Try t) {
        t = this;
    }
}

t=this 在这段代码中做了什么? 我知道这通常是指顶部的起始变量,但在他的情况下,它看起来什么都不做?

【问题讨论】:

  • 对不起,我只是一个新手。
  • 它将this分配给局部变量t然后返回,所以基本上什么都没有。
  • 好的,所以它没有指向数据中的任何地址?如果我们分配两个名为 t1 和 t2 的对象并说: t1=t2 它指向那个地址,对吗?但不是在这种情况下?
  • 在这种情况下,t = this; 什么都不做。它不会改变调用方法的参数 t 的值。

标签: java class pointers this


【解决方案1】:

t= this 表示您正在将当前构造函数对象分配给局部变量 tthis 指的是当前对象。

【讨论】:

    【解决方案2】:

    this总是引用当前对象,你可以引用here

    t=this 在这段代码中做了什么?

    它将t提供的引用分配给当前对象。

    我知道这通常是指 top 但 int 中的起始变量 他的案子看起来好像什么都没做?

    不,你错了,this不是指top中的起始变量,而是如上所述,它指的是当前对象。

    this最常见的用法是通过构造函数来初始化对象的变量,如下所示:

    public class Try {
        String name; //initialize using constructor
        int age; //initialize using constructor
    
        //constructor
        public Try(String name, int age) {
            this.name = name; //assigns passed name value to current object's name
            this.age = age; //assigns passed age value to current object's age
        }
    }
    

    所以它不指向数据中的任何地址?

    this 持有当前对象的引用(就像C 中的指针一样)。

    如果我们分配两个名为 t1 和 t2 的对象并说: t1=t2 它指向那个地址,对吗?但在这种情况下不是?

    是的,如果您分配t1=t2,那么您将让t1 指向与t2 相同的对象,即t1t2 都指向堆上的相同对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多