转自:
Java中this关键字具有什么功能呢?
在java代码中,this关键字用于引用当前对象的引用变量
this
关键字可用来引用当前类的实例变量。this
关键字可用于调用当前类方法(隐式)。this()
可以用来调用当前类的构造函数。this
关键字可作为调用方法中的参数传递。this
关键字可作为参数在构造函数调用中传递。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代码中,
参数(形式参数)和实例变量(rollno
和name
)是相同的,
此时我们需使用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关键字,即可实现相应的功能
this关键字用于调用当前类的方法,当我们不使用this关键字时,编译器调用方法时,会自动添加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
关键字的实际使用。
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()必须是构造函数中的第一行代码
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();
}
}
可以从方法中 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