java类中的this是什么意思,java的this是什么意思
这在类内部用来表示类实例本身。
这个关键字是类中对自身的引用,它可以方便类中的方法访问它们自己的属性。
java中this用法
1、当局部变量和成员变量重名的时候,在方法中使用this表示成员变量以示区分。
课程演示{
String=“这是一个成员变量”;
void fun(字符串)
system . out . println(str);
system . out . println(this . str);
this.str=str
system . out . println(this . str);
}
}
公共类This{
公共静态void main(String args[]){
Demo Demo=new Demo();
Demo.fun(这是一个局部变量);
}
}分析:上面的类Demo中有一个成员变量str和一个局部变量str(类方法中的形参)。显然,局部变量和成员变量同名。此时,一般在方法中直接使用str,实际上使用的是局部变量str,对成员变量str没有影响。这时,如果你需要对成员变量做一些事情,你必须使用这个关键字。
有一个问题。如果方法中没有str,在方法中使用成员变量str会怎么样?实际上,方法中的所有操作都指向成员变量str。《java编程思想》第84页中间有一句话:如果在一个方法内部调用同一个类的另一个方法,可以不用这个。同样,如果在一个方法中没有与成员变量同名的局部变量,那么在这个方法中使用成员变量时就没有必要使用这个。您可以运行以下代码来查看。
课程演示{
String=“这是一个成员变量”;
void fun(String str1){
system . out . println(str 1);
system . out . println(str);
}
}
公共类This{
公共静态void main(String args[]){
Demo Demo=new Demo();
Demo.fun(这是一个局部变量);
}
}2、this关键字把当前对象传递给其他方法
这里有一个经典的例子,是85页的java编程思想的例子。我们拿出来仔细研究一下。
类别人员{
公共void吃(苹果苹果){
apple peeled=apple . get peeled();
system . out . println( Yummy );
}
}
类别削皮器{
静态苹果皮(苹果苹果){
//.去除果皮
退回苹果;
}
}
苹果类{
苹果去皮(){
返回peeler . peel(this);
}
}
公共类This{
公共静态void main(String args[]){
新人()。吃(新苹果());
}
}
如何解决写爬虫IP受阻的问题?立即使用。
这是我自己的理解,不一定正确。看看书上是怎么说的:苹果需要调用Peeler.peel()方法,这是一个外部工具方法,它会执行由于某种原因必须放在苹果之外的操作(可能是因为外部方法会应用到很多不同的类,但是你不想重复这些代码)。为了将自身传递给外部方法,必须使用这个关键字。
分析:想象一个场景。如果各种水果都是这样削的,只要给我,我也会这样削。然后,结合上面的例子,传入一个水果。在我们吃它之前,我们必须得到peel(),我们必须把这个水果作为参数传递给外部的peel(),用这个来表示我们自己,传递给外部的方法。
3、当需要返回当前对象的引用时,就常常在方法写return this;
这种方法的优点是,当您使用对象调用方法时,方法返回修改后的对象,您可以使用该对象执行其他操作。因此,很容易对一个对象执行多个操作。
公共类This{
int I=0;
此增量(){
I=2;
还这个;
}
作废打印(){
system . out . println( I= I);
}
公共静态void main(String args[]){
This x=new This();
x.increment()。增量()。print();
}
}结果是:
44、在构造器中调用构造器需要使用this
一个类有许多构造函数。有时您希望在一个构造函数中调用其他构造函数,以避免代码重复。可以使用这个关键字。java编程思想中有一段话:通常写这个的时候,指的是“这个对象”或者“当前对象”,它本身就表示对当前对象的引用。在构造函数中,如果为此添加了参数列表,它就有不同的含义。这将导致显式调用与此参数列表匹配的构造函数;所以有一个直接调用其他构造函数的方法。
仔细分析:
从主函数开始,new Flower()将在内存中分配空间并初始化对象。初始化的对象是调用构造函数,这里没有写参数。当然是调用默认构造函数,也就是不带参数的构造函数。
这个无参数构造函数的第一行代码是这样的( hi ,122);这意味着无参数构造函数调用带两个参数的构造函数,带两个参数来构造函数。第一行代码是这样的:这行代码自动将构造函数与一个参数进行匹配,发现Flower(String ss)的比较是一个字符串类型的参数。
然后调用带字符串参数的构造函数,打印:constructor s=hi只有一个字符串参数;然后回到上一级调用函数,也就是带两个参数的构造函数,打印出来:带String和int类型参数的构造函数;回到上一级,就是无参数构造函数。Print:默认的构造函数。
此时,构造函数已经初始化了新创建的对象,最后在主函数的最后一行代码中打印出来:petalCount=122 s=hi。
画个图更好看。
有几点需要注意:
1,这个只能调用一个构造函数,一个构造函数中不能同时调用两个构造函数;
2.必须把调用的构造函数放在第一个位置,这也解释了为什么一个构造函数不能调用两个构造函数,第二个必然在第一个位置之外。
3.在本例中,在带有两个参数的构造函数中,您可以使用它来调用任何其他只有一个参数的构造函数。你看着办,喜欢哪个就调哪个。
4.在构造函数以外的方法中,不能使用此调用构造函数。代码中的注释都无法正确编译。
this总结
1.它表示对当前对象的引用!
2.这意味着使用类的成员变量而不是函数参数。
3.用来指代构造函数中满足指定参数类型的构造函数(实际上就是构造函数)。但是这里一定要注意:只能引用一种构造方法,而且必须在开头!
4.显然,这不能用在static方法中,因为这指的是当前对象,而static没有对象。
我们,大量免费的Java入门教程,欢迎在线学习!这在java里就是这个意思。更多详情请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。