java this详解_java this用法详解

java this用法详解

this关键字,是对所引用对象的访问,一般所说的表示对当前对象的引用是不准确的。下面是取自网络的一个实例,后面,本人将根据个人的理解总结this的用法。另外,关于this在内部类里的用法,请参阅《内部类的使用》:http://blog.sina.com.cn/s/blog_463b79ca01010twq.html。

public class ThisTest {

private int i = 0;

// 带int型形参的构造方法

ThisTest(int i) {

this.i = i + 1;//

this表示i是当前类的成员变量,用来区别于当前构造方法的参数变量i(赋值符号“=”右侧的变量)。

// this.i与i输出,证明两者的不同。

System.out.println("Int

constructor this.i:" + this.i + " i:" + i);

}

// 带String型形参的构造方法

ThisTest(String s) {

System.out.println("String

constructor: " + s);

}

// 带int、String型形参的构造方法

ThisTest(int i, String s) {

this(s);// this调用第二个构造器

this.i = i++;//

把方法参数i赋值给成员变量i,然后该参数变量自增1

System.out.println("IntString

constructor this.i:" +this.i +

" i:" + i + "\n"

+

"String constructor: " + s);

}

public ThisTest increment() {

this.i++;

return this;//

返回的是当前的对象,该对象属于(ThisTest)

}

public static void main(String[] args) {

ThisTest tt0 = new

ThisTest(10);

ThisTest tt1 = new

ThisTest("ok");

ThisTest tt2 = new

ThisTest(20, "ok again!");

System.out.println(tt0.increment().increment().increment().i);

}

}

1、直接表示当前类使用new创建的对象。比如incement()方法的返回的就是当前对象。

2、指明是当前对象的成员变量,可以用在除static方法的其它任何方法(包括构造方法)的任意位置,用来给该类的成员变量赋值或者使用该类的成员

变量。这种用法较为常见,上例中出现在下列语句中的this,就属于此用法。

this.i = i+1;

this.i = i++;

this.i++;

当一个方法变量与类成员变量同名时,this的作用尤为突出,上面的前两个语句this.i表示变量i是类ThisTest的成员变量,而单一的变量i,则是方

法的形参。

3、表示调用当前类的其它构造方法,这种用法只能用于在构造方法重载时,执行一个构造方法对另一个构造方法的调用。使用时需要注意几点:

一是必须作为构造方法的第一行执行语句放置,如果试图放在其它行时,编译将产生错误。在例程中的ThisTest(int i,

String s)构造方法的第一行

添加任意执行语句(比如一个变量声明int a;),将抛出错误。

二是同一构造方法中只准许调用一次其它重构方法,这与第一点要求相符。

三是多个重构方法可以分别使用this(形参)调用其它构造方法,但是不能造成递归。比如,在例程中,如果我们在构造方法ThisTest(String

s)中可

以使用this(1)调用带int型形参的构造方法,但是不能使用this(1,"行不通")递归调用ThisTest(int i,

String s)。

4、在内部类内访问外层类引用及外层类成员变量(请参阅<>http://blog.sina.com.cn/s/blog_463b79ca01010twq.html)。

public void A{

priave int a;

private void B{//类B为类A的内部成员类

private

int a;

public A

get(){

return A.this;//对外层类引用

}

public

void set(int a){

this.a = a;//内部类成员变量及方法参数变量

A.this.a = this.a;//外层及内部类成员变量

}

}

提示:在任何static方法中都不需要适用this关键字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值