Java关键词 this

'this'是Java为下面这两个目的而创建的内部隐含对象。

  • "this"对象在内部指向当前类对象。
  • 每当类的正式参数和数据成员相似时,要从正式参数区分类的数据成员,必须通过"this"处理类的数据成员。

this()用于从当前类参数化构造函数调用当前类默认构造函数。

this(...)用于从同一类的其他类别构造函数调用当前类参数化构造函数。

例如:

class Test
{
    int a, b; Test ()
    {
        this (10); // 调用当前类的单个参数构造函数
        System.out.println ("我来自默认构造函数。。。");
        a=1;
        b=2;
        System.out.println ("VALUE OF a = "+a);
        System.out.println ("VALUE OF b = "+b);
    }
    Test (int x)	
    {
	this (100, 200); // 调用当前类的2个参数的构造函数
        System.out.println ("我来自1个参数的构造函数。。。");
        a=b=x;
        System.out.println ("VALUE OF a = "+a);
        System.out.println ("VALUE OF b = "+b);
    }
    Test (int a, int b)
    {
        System.out.println ("我来自2个参数的构造函数。。。");
        this.a=a;
        this.b=b;
        System.out.println ("VALUE OF a = "+this.a);
        System.out.println ("VALUE OF b = "+this.b);
        System.out.println ("VALUE OF a = "+a);
        System.out.println ("VALUE OF b = "+b);
    }
};
class TestDemo
{
    public static void main (String k [])
    {
        Test t1=new Test ();
    }
};

"this"规则:

每当我们在当前类构造函数中使用this()或者this(...)时,必须仅使用该语句仅用作第一个语句。

包含this()或者this(...)的输出的顺序将是我们给出作为输入的输入的相反顺序。

例如,我们需要输出如下:

I AM FROM DEFAULT CONSTRUCTOR...	---1 VALUE OF a = 1
VALUE OF b = 2
I AM FROM SINGLE PARAMETERIZED CONSTRUCTOR... ---2 VALUE OF a = 100
VALUE OF b = 200
I AM FROM DOUBLE PARAMETERIZED CONSTRUCTOR... ---3 VALUE OF a = 10
VALUE OF b = 10
We must write in the following order as input:
Test (10);	---3
Test (100, 200);	---2
Test ();	---1

说明:

每当我们引用类似于正式参数的数据成员时,JVM都会首先偏好于正式参数,而每当我们在类的变量名称之前写一个关键字,那么JVM都会引用类的数据成员。

this方法用于调用当前类构造函数。

说明:

如果对象调用的任何方法,那么该对象称为源对象。

如果我们将对象作为参数传递给该方法,那么该对象称为目标对象。

例如:

SOURCE OBJECT. METHOD NAME (TARGET OBJECT);
t1. display (t2); //written in main

在显示方法的定义中,T1数据成员由this引用。
数据成员名称(this.a & this.b)而t2对象数据成员通过形式对象名称引用。
数据成员名称(T. A& T. B)。

void display (Test T) //T is formal object member
{
    System.out.println ("VALUE OF a BELONGS TO DATA MEMBER ="+this.a);
    System.out.println ("VALUE OF b BELONGS TO DATA MEMBER ="+this.a);
    System.out.println ("VALUE OF a BELONGS TO FORMAL OBJECT MEMBER ="+T.a);
    System.out.println ("VALUE OF b BELONGS TO FORMAL OBJECT MEMBER ="+T.a);
}
日期:2020-04-11 23:04:29 来源:oir作者:oir