`
DavidIsOK
  • 浏览: 75857 次
社区版块
存档分类
最新评论

this的用法

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

package com.hxw.T2;
public class ThisTester {
private int i=0;
//第一个构造器:有一个int型形参
ThisTester(int i){
this.i=i+1;//此时this表示引用成员变量i,而非函数参数i
System.out.println("Int constructor i——this.i: "+i+"——"+this.i);
System.out.println("i-1:"+(i-1)+"  this.i+1:"+(this.i+1));
//从两个输出结果充分证明了i和this.i是不一样的!
}
// 第二个构造器:有一个String型形参
ThisTester(String s){
System.out.println("String constructor: "+s);
}
// 第三个构造器:有一个int型形参和一个String型形参
ThisTester(int i,String s){
this(s);//this调用第二个构造器
//this(i);


this.i=i++;//this以引用该类的成员变量
System.out.println("Int constructor: "+i+"/n"+"String constructor: "+s);
}
public ThisTester increment(){
this.i++;
return this;//返回的是当前的对象,该对象属于(ThisTest)
}
public static void main(String[] args){
ThisTester tt0=new ThisTester(10);
ThisTester tt1=new ThisTester("ok");
ThisTester tt2=new ThisTester(20,"ok again!");


System.out.println(tt0.increment().increment().increment().i);
//tt0.increment()返回一个在tt0基础上i++的ThisTest对象,
//接着又返回在上面返回的对象基础上i++的ThisTest对象!
}
}



运行结果:

Int constructor i——this.i: 10——11
i-1:9 this.i+1:12
String constructor: ok
String constructor: ok again!
Int constructor: 21/nString constructor: ok again!
14

细节问题注释已经写的比较清楚了,这里不在赘述,只是总结一下,其实this主要要三种用法:
1、表示对当前对象的引用!
2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。
3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!
还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!

说明在什么情况下需要用到this:
第一、通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错,呵呵。
第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。

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


引用地址:http://blog.sina.com.cn/s/blog_6a6badc90100t8hm.html

分享到:
评论

相关推荐

    C#关键字this用法

    在本文中,我们将深入探讨`this`关键字的用法,通过示例程序来帮助理解其功能和应用场景。 首先,`this`关键字是一个隐式指针,它指向当前对象实例。当你在类的方法或属性中引用一个成员时,如果该成员与方法参数或...

    this用法很重要

    在编程领域,尤其是Java语言中,`this`关键字是一个至关重要的概念,对于初学者来说,理解和掌握它的用法是基础且必要的。`this`关键字在Java中...所以,"this用法很重要",这句话是对Java编程初学者的一个重要提醒。

    Java中this用法.pdf

    Java 中 this 用法 在 Java 中,this 是一个关键字,随处可见,用法也多。当全局变量跟局部变量重名时,表示使用全局变量(此时 this 指代本类对象)。下面我们将详细介绍 Java 中 this 的用法。 1. 当全局变量跟...

    Java this用法

    Java this用法 概述:Java 中的 this 关键字是一种特殊的引用变量,它总是指向当前对象本身。this 关键字可以用来访问当前对象的成员变量、方法和构造方法。在 Java 中,this 关键字有多种用法,本文将详细介绍 ...

    JAVA this用法

    JAVA this用法详解 在 Java 编程语言中,this 关键字是一个非常重要的概念,它有多种用法,但基本上可以归纳为三种:表示当前对象的引用、表示类的成员变量和在构造方法中引用满足指定参数类型的构造器。下面将详细...

    js对象定义及this用法.docx

    js对象定义及this用法.docx

    js对象定义及this用法.pdf

    js对象定义及this用法.pdf

    Javascript的this用法

    ### JavaScript中的`this`用法详解 在JavaScript中,`this`关键字的使用十分常见,但也是最容易引起混淆的部分之一。正确理解`this`的工作原理对于编写高效、可靠的代码至关重要。本文将深入探讨`this`在不同上下...

    Java 中This用法的实例详解

    Java 中 This 用法的实例详解 Java 中的 this 关键字是一个非常重要的概念,它可以在类内部对自己的一个引用,可以方便类中方法访问自己的属性和方法。下面我们来详细了解 Java 中 this 用法的实例详解。 1. 使用...

    js对象定义及this用法1

    JavaScript中的对象定义与`this`关键字的用法是编程中非常关键的概念,特别是在构建复杂的应用时。`this`关键字在JavaScript中用来引用当前上下文的对象,它的行为有时可能与传统面向对象语言(如Java)有所不同。 ...

    java中this与super用法

    Java 中 this 与 super 用法 在 Java 中,this 和 super 是两个重要的关键字,它们都是用于访问当前对象或父类中的成员变量或方法的。 this 用法 this 的用法在 Java 中大体可以分为三种: 1. 普通的直接引用 在...

    js中this用法实例详解

    本文实例讲述了js中this用法。分享给大家供大家参考。具体如下: 1. 指向window 全局变量 alert(this) //返回 [object Window] 全局函数 function sayHello(){ alert(this); } sayHello(); 2. ...

    this关键字的用法.pdf

    在编程语言中,`this`关键字是一个非常重要的概念,尤其在面向对象编程中。`this`关键字在Delphi这样的对象 Pascal编程环境中具有特殊的意义。它主要用于指代当前对象实例,帮助程序员在类的方法中访问和操作当前...

    javascript 中关于 this 的用法.zip

    本篇将深入探讨JavaScript中的this用法,帮助你更好地掌握这个核心概念。 1. **函数调用方式与this绑定** - **默认绑定**:在全局环境中,this被绑定到全局对象,在浏览器中通常是window。例如: ```javascript ...

    java this 用法详解及简单实例

    Java this 用法详解及简单实例 Java 语言中的 this 关键字是一种特殊的引用类型,它指向当前对象本身。它可以用来访问当前对象的属性和方法。在 Java 中,this 关键字是类内部对自己的一个引用,可以方便类中方法...

    深入浅出分析javaScript中this用法

    本文实例讲述了javaScript中this用法。分享给大家供大家参考。具体分析如下: 之前学javascript的时候总搞不清this,这个this不像java里的this那么好理解。我后来也是看了许多别人写的文章,才理解过来的。现在把别人...

    this的用法以及改变this指向

    ### this的用法以及改变this指向 #### 为什么学习this? 在JavaScript中,`this`关键字的使用极为广泛。理解并掌握`this`的工作机制对于提高编程能力至关重要: 1. **阅读代码的能力**:不了解`this`的工作原理,...

    C++中this指针的用法

    以下是对`this`指针用法的详细解析,包括其基本功能、特殊用途以及在不同上下文中的行为。 #### 1. `this`指针的基本作用 `this`指针在每个非静态成员函数中隐式存在,指向调用该函数的对象实例。例如,在一个`...

    C# this关键字的四种用法

    本文实例为大家分享了C# this关键字的四种用法,供大家参考,具体内容如下 用法一 this代表当前实例,用this.显式调用一个类的方法和成员 namespace Demo { public class Test { private string scope = 全局...

    Javascript原型对象、this的5钟用法、原型继承、Caller和Callee的使用.docx

    总结来说,理解JavaScript中的原型对象、this用法、原型继承和Caller/Callee对于编写高效、可维护的代码至关重要。这些概念构成了JavaScript面向对象编程的基础,帮助开发者实现对象间的关联和复用,以及创建复杂的...

Global site tag (gtag.js) - Google Analytics