Java中this关键字具有什么功能呢?

转自:

Java中this关键字具有什么功能呢?

Java this关键字的功能说明:

    在java代码中,this关键字用于引用当前对象的引用变量

  1. this关键字可用来引用当前类的实例变量。
  2. this关键字可用于调用当前类方法(隐式)。
  3. this()可以用来调用当前类的构造函数。
  4. this关键字可作为调用方法中的参数传递。
  5. this关键字可作为参数在构造函数调用中传递。
  6. this关键字可用于从方法返回当前类的实例。

Java中this关键字具有什么功能呢?_第1张图片

1. this:引用当前类的实例变量

this关键字可以用来引用当前类的实例变量。
如果实例变量和参数之间存在歧义,则 this 关键字可用于明确地指定类变量以解决歧义问题。

了解没有 this 关键字的问题

下面先来理解一个不使用 this 关键字的示例:

class testClass {
    int keyId;
    String info1;
  
    testClass(int keyId, String info1) {
        keyId = keyId;
        info1 = info1; 
    }

    void printInfo() {
        System.out.println(keyId+ " " + info1);
    }


     public static void main(String args[]) {
        testClass  s1 = new testClass(888,"java265.com");
        testClass  s2 = new testClass(999,"test");
        s1.printInfo();
        s2.printInfo();
    }
}

------运行以上代码,将输出以下信息----

0 null
0 null

在上面的java代码中,
    参数(形式参数)和实例变量(rollnoname)是相同的,
     此时我们需使用this关键字来区分局部变量和实例变量


使用 this 关键字解决了上面的问题

class testClass {
    int keyId;
    String info1;
  
    testClass(int keyId, String info1) {
        this.keyId = keyId;
        this.info1 = info1; 
    }

    void printInfo() {
        System.out.println(keyId+ " " + info1);
    }


     public static void main(String args[]) {
        testClass  s1 = new testClass(888,"java265.com");
        testClass  s2 = new testClass(999,"test");
        s1.printInfo();
        s2.printInfo();
    }
}

------运行以上代码,将输出以下信息----

888 java265.com
999 test 

注意事项:
   当形式参数和实例变量名称不同时,则无需使用this关键字,即可实现相应的功能

 2. this:调用当前类方法

       this关键字用于调用当前类的方法,当我们不使用this关键字时,编译器调用方法时,会自动添加this关键字  

3. this():调用当前类的构造函数

this()构造函数调用可以用来调用当前类的构造函数

从参数化构造函数调用默认构造函数:

class testClass {
     testClass() {
        System.out.println("print testClass");
    }

    testClass(int x) {
        this(); //调用构造函数
        System.out.println(x);
    }

    public static void main(String args[]) {
        testClass a = new testClass(120);
    }
}

例:
使用this()构造函数调用

this()构造函数调用用于从构造函数重用构造函数。 它维护构造函数之间的链,即它用于构造函数链接。看看下面给出的示例,显示this关键字的实际使用。

class testClass {
    int keyId;
   String info1;
   String info2;
   String info3;

    testClass(int keyId, String info1, String info2) {
        this.keyId = keyId;
        this.info1 = info1;
        this.info2 = info2;
    }

  testClass(int keyId, String info1, String info2,String info3) { 
        this(keyId,info1,info2);//初始化构造函数
         this.info3 = info3;
    }

    void printInfo() {
        System.out.println(keyId + " " + info1 + " " + info2 + " " + info3);
    }
 
    public static void main(String args[]) {
        testClass s1 = new testClass(888, "java265", "java265-1");
        testClass s2 = new testClass(999, "java265", "java265-1","java265-2");
        s1.printInfo();
        s2.printInfo();
    }
}

 注意事项:
    调用this()必须是构造函数中的第一行代码 

4. this:作为参数传递给方法

    this关键字作为方法的参数进行传递,
   例: 

class testClass {
    void p(testClass obj) {
        System.out.println(testClass被创建");
    }

    void show() {
        p(this);
    }

    public static void main(String args[]) {
        testClass s1 = new testClass();
        s1.show();
    }
}

 6. this关键字用来返回当前类的实例

可以从方法中 this 关键字作为语句返回。 在这种情况下,方法的返回类型必须是类类型(非原始)。 看看下面的一个例子:

作为语句返回的语法

return_type method_name(){  
    return this;  
}

从方法中返回为语句的 this 关键字的示例

class testClass {
    testClass getThis() {
        return this;
    }

    void printInfo() {
        System.out.println("Hello java265.com!");
    }
 
    public static void main(String args[]) {
        new testClass().getThis().printInfo();
    }
}

------运行以上代码,将输出以下信息---- 
Hello java265.com
  

 

你可能感兴趣的:(java,java)