浅谈Java中的This关键字

在Java中提供一个this关键字,其实这个关键字很简单,花点时间去看看相关的资料就会很容易明白怎么去使用这个关键字,下面开始讲解this这个关键字。

首先我们应该知道this代表的什么,它代表的是一个对象的引用,下面在代码里面解释:

this是什么?

代码1:解释this是对象的引用

package com.hua.www.override;


public class TestThis {
public static void main(String[] args) {

System.out.println(new A().testThis());//这里被我简写了,可以分步  A a=new  A();    A b=a.testThis();     System.out.println(b);
}


}
class A{
public A testThis(){
return this;
}
/*@Override
public String toString() {
// TODO Auto-generated method stub
return "类A重写的tostring的方法!";
}*/
}

输出:com.hua.www.override.A@17494c8(如果上面的注释去掉,tostring被我重写,输出:类A重写的tostring的方法!)

this怎么使用?在哪里使用?

this关键字使用的地方一般在两个地方: 1.构造函数中2.非static方法中

代码1:构造函数中使用this关键字( 重点:在构造函数中使用this调用另一个构造函数,只能使用一次,并且这个语句要放在第一句。)

package com.hua.www.override;

public class TestThis {
public static void main(String[] args) {
A a=new A();
System.out.println(a.getName());
System.out.println(a.getAge());
}
}
class A{
private String name;
private int age;
public A(){
this(2);
/*Constructor call must be the first statement
in a constructor.
报错的原因是,要放在第一句。所以不可以用this在构造器中使用两次去调用构造函数。
*/
//this("hua");

}
public A(int i){
this("hua");
this.age=10;

}
public A(String s){
this.name="hua";
}
public String getName() {
return name;
}
public int getAge() {
return age;
}

}

代码1:非static方法中使用this关键字
package com.hua.www.override;

public class Test {
String name;
public String getName() {
this.aaa();
return name;
}
public void setName(String name) {
this.name = name;
}
public void aaa(){
System.out.println("方法aaa");
}
}
重点讲解:为什么static方法不能使用this关键字(static方法不能调用非static方法和变量的原因基本一样)?
首先我们要知道静态方法是在类加载时就会加载,而非静态函数和变量则是在创建对象的时候才会加载。重点就在 静态加载在非静态之前,也就是说 静态加载时还不存在非静态的,那么静态这时候调用非静态的根本就找不到,所以不能调用
this是对象的引用,静态的方法来调用对象的引用,显然在没有创建对象之前根本找不到这个对象,所以编译通不过,编译器会报错。


什么时候使用this关键字?

1.在方法中要用调用这个方法的对象的引用时
2.当形参和成员变量重名时,在方法内使用成员变量,就要使用this来表明你要使用的是对象的成员变量
3.方法调用时其实前面都默认加上了this 关键字,只是省略不写,如果想让代码更具有可读性,可以适当添加。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值