`
_大端
  • 浏览: 3546 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

this关键字的三种常见用法

    博客分类:
  • J2se
阅读更多

属个人收藏

 

参考文献链接:http://mougaidong-163-com.iteye.com/blog/994934

 

                  http://www.cnblogs.com/java-class/archive/2012/12/19/2825463.html

 

                  http://blog.csdn.net/anmei2010/article/details/4091227 

 

              http://www.cnblogs.com/-cyb/articles/Java-this.html

 

每当一个对象创建后,Java虚拟机会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this的用法。这在“Java关键字static、final使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。

 

1、局部变量与成员变量重名,函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽局部变量隐藏成员变量,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。注意区别成员变量和局部变量

 

2、方法参数与成员变量重名

public class Hello {

    String s = "Hello";

 

    public Hello(String s) {

       System.out.println("s = " + s);

       System.out.println("1 -> this.s = " + this.s);

       this.s = s;//把参数值赋给成员变量,成员变量的值改变

       System.out.println("2 -> this.s = " + this.s);

    }

 

    public static void main(String[] args) {

       Hello x = new Hello("HelloWorld!");

       System.out.println("s=" + x.s);//验证成员变量值的改变

    }

}

结果为:s = HelloWorld!

1 -> this.s = Hello

2 -> this.s = HelloWorld!

s=HelloWorld!

3、调用该类的另一个构造方法,用法是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。如果构造方法中调用另一个构造方法,则该语句必须是第一条语句。

public class ThisDemo {  

    String name;

    int age;

    public ThisDemo (){ 

        this.age=21;

   }     

    public ThisDemo(String name,int age){

        this();

        this.name="Mick";

    }     

  private void print(){

         System.out.println("最终名字="+this.name);

         System.out.println("最终的年龄="+this.age);

    }

    public static void main(String[] args) {

       ThisDemo tt=new ThisDemo("",0); //随便传进去的参数       tt.print();

    }

}

 

(没有看懂案例)4在函数中,需要引用该函所属类的当前对象时候,直接用this。把this作为参数传递 
当你要把自己作为参数传递给别的对象时,也可以用this。

把自己当作参数传递时,也可以用this.(this作当前参数进行传递)

      class A {

    public A() {

       new B(this).print();// 调用B的方法

    }

    public void print() {

       System.out.println("HelloAA from A!");

    }

}

class B {

    A a;

    public B(A a) {

       this.a = a;

    }

    public void print() {

       a.print();//调用A的方法

       System.out.println("HelloAB from B!");

    }

}

public class HelloA {

    public static void main(String[] args) {

       A aaa = new A();

       aaa.print();

       B bbb = new B(aaa);

       bbb.print();

    }

}

 结果为:HelloAA from A!

        HelloAB from B!

        HelloAA from A!

        HelloAA from A!

        HelloAB from B!

在这个例子中,对象A的构造函数中,用new B(this)把对象A自己作为参数传递给了对象B的构造函数。

 

 

(暂时没有找相关资料)5、匿名类和内部类中的中的this

 

 

其实这些用法总结都是从对“this是指向对象本身的一个指针”这句话的更深入的理解而来的,死记不然容易忘记而且容易搞错,要理解!

 

分享到:
评论

相关推荐

    MLDN魔乐JAVA_09深入引用、this关键字、对象比较.rar

    本课程“MLDN魔乐JAVA_09深入引用、this关键字、对象比较”将带你深入探讨这些核心概念。 首先,让我们来讨论“引用”。在Java中,变量可以分为基本类型和引用类型。引用类型变量实际上存储的是对象在内存中的地址...

    020509_【第5章:面向对象基础】_this关键字与static关键字

    它在以下几种情况中尤其常见: 1. **方法内部引用实例变量**:当局部变量和实例变量同名时,`this`可以用来区分它们,确保访问到的是实例变量。 2. **构造函数调用**:一个类可能有多个构造函数(构造器),`this`...

    Java软件开发实战 Java基础与案例开发详解 5-7 this关键字 共5页.pdf

    #### 二、this关键字的用法 ##### 1. 当参数名与成员变量名冲突时 在类的方法中,如果局部变量(如方法参数)的名字与成员变量名字相同,可以通过使用`this`关键字来明确地指明所访问的是成员变量。这样可以避免...

    this关键字的总结.doc

    ### Java中的this关键字详解 #### 一、概述 在Java编程语言中,`this`关键字是一种非常实用且灵活的关键字,它主要用于指代当前对象。`this`可以在类的内部被使用,帮助开发者清晰地表达代码逻辑,尤其是在解决...

    如何使用Javascript中的this关键字

    在JavaScript中,`this`关键字是一个非常重要的概念,它用于引用函数执行时的上下文对象。`this`的值取决于函数被...在编写JavaScript代码时,正确使用`this`可以避免很多常见的错误,并提高代码的可读性和可维护性。

    跟我学习javascript的this关键字

    在JavaScript中,`this`关键字主要有以下几种情况: 1. 全局上下文中的`this` 在全局执行上下文中,`this`指代的是全局对象。在浏览器中,全局对象是`window`。因此,在全局作用域中声明的变量和函数实际上是作为...

    this关键字

    下面我们将详细探讨`this`关键字的用途、用法以及它在C#中的重要性。 首先,`this`关键字用于访问当前类中的成员。当类的成员与局部变量或者参数名相冲突时,`this`可以帮助我们区分它们。例如: ```csharp public...

    【Java编程教程】详解Java this 关键字.pdf

    // 使用this关键字区分实例变量和构造函数参数 this.rollno = rollno; this.name = name; this.fee = fee; } void display() { System.out.println(rollno + " " + name + " " + fee); } } ``` 2. 调用...

    精通JavaScript的this关键字_.docx

    `this`关键字的用法类似于自然语言中的代词,它用来引用当前执行上下文的对象,帮助开发者避免命名冲突和提高代码可读性。 在JavaScript中,`this`总是指向调用函数或方法时所在的对象。这个对象被称为函数的“调用...

    JavaScript中的this关键字使用方法总结

    以下是关于`this`关键字在JavaScript中四种常见调用方式的详细解释: 1. **作为对象方法调用** 当函数作为对象的一个方法被调用时,`this`会被自动绑定到调用该方法的对象上。例如: ```javascript var point =...

    Js作用域和this关键字1

    JavaScript中的作用域和`this`关键字是编程中非常重要的概念,尤其在JavaScript中,它们具有独特的特点和行为。本文将深入探讨这两个概念及其在实际编程中的应用。 首先,我们来看一下**作用域(Scope)**: 作用...

    js中的this关键字详解

    本文将详细解析四种常见的`this`使用情况。 **情况一:纯粹的函数调用** 当函数被作为全局函数调用时,`this`指向全局对象,在浏览器环境中,这个全局对象通常是`window`。以下示例展示了`this`如何在全局作用域中...

    java代码-日常练习31,this关键字

    在提供的压缩包文件中,`main.java`可能是包含使用`this`关键字的示例代码,而`README.txt`可能包含了关于这个练习的更多说明或提示。读者可以通过查看这些文件进一步学习和理解`this`的关键字的应用。

    Java中的this和super的用法 

    使用 this 和 super 关键字可以帮助我们在编程中避免一些常见的错误,例如,在某个方法中,如果形参名与当前对象的成员变量名相同,使用 this 关键字可以明确地指明当前对象的成员变量名。 此外,使用 this 和 ...

    JavaScript中this关键字使用方法详解

    ### JavaScript中this关键字使用方法详解 #### 一、引言 在面向对象编程语言中,`this`关键字是一个非常常见的概念。例如,在C++、C#和Java等语言中都有提供这一关键字,尽管初学时可能会觉得有些难度,但一旦理解...

    java之this关键字用法实例分析

    当存在需要明确指出当前使用方法的对象是谁的情况时,`this`关键字非常有用。比如,如果一个方法或构造函数中有多个同名的变量(包括字段和参数),`this`可以帮助区分它们。在`increment()`方法中,`this.i += 1;`...

    JavaScript中this关键字用法实例分析

    下面我们将通过一系列实例来深入理解`this`的关键字用法。 首先,我们来看一个基本的例子: 例1: ```javascript function a() { var user = "yao"; console.log(this.user); // undefined console.log(this); ...

    Java的this关键字的使用与方法的重载相关知识

    在Java中,`this`关键字有以下几种常见用法: 1. **访问实例变量**:当成员变量与局部变量或参数变量重名时,`this`可以帮助我们明确地访问类的实例变量。例如,在下面的代码中,`this.name`和`this.age`用于访问...

    JS this关键字在ajax中使用出现问题解决方案

    3. 构造函数:在使用`new`关键字创建实例时,`this`指向新创建的对象。 4. 方法调用:当函数作为对象的一个方法调用时,`this`指向调用该方法的对象。 5. `call()`, `apply()`, `bind()`:这三个函数可以显式地设置`...

    java具体关键字和用法

    以上介绍了 Java 中的一些常见关键字及其用法。这些关键字是 Java 编程的基础,熟练掌握它们对于编写高效、可维护的 Java 应用程序至关重要。希望本文能帮助 Java 初学者更好地理解和使用这些关键字。

Global site tag (gtag.js) - Google Analytics