如题,请大家详细的教我一下this的用法,我老是搞不懂这个!
顺便希望大家能给出一点简单的实例`进一步分析一下THIS的用法!
JAVA(this用法)
答案:5 悬赏:20 手机版
解决时间 2021-12-21 04:14
- 提问者网友:疯子也有疯子的情调
- 2021-12-20 06:02
最佳答案
- 五星知识达人网友:街头电车
- 2021-12-20 07:22
这个this肯定是用在某个类的方法里吧?呵呵,我们继续往下说。
举个例子:
public class persion{
private String name=null;
private int age;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
}
在这个类中setName方法中第一个变量用this是为了和本方法的参数this做区别,表示这个name指的是Person这个类的name属性,而不是name参数,如果去掉这个this,执行完这个方法后,Person类的name属性仍然为null
getName方法返回的Person类的name,之所以不用this是因为没有必要,因为编译器会知道这个name就指的是Person的name而不是其他的name(因为找个方法没有name变量和它混淆)。当然,这个方法你也可以显示的使用return this.name,没错。
举个例子:
public class persion{
private String name=null;
private int age;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
}
在这个类中setName方法中第一个变量用this是为了和本方法的参数this做区别,表示这个name指的是Person这个类的name属性,而不是name参数,如果去掉这个this,执行完这个方法后,Person类的name属性仍然为null
getName方法返回的Person类的name,之所以不用this是因为没有必要,因为编译器会知道这个name就指的是Person的name而不是其他的name(因为找个方法没有name变量和它混淆)。当然,这个方法你也可以显示的使用return this.name,没错。
全部回答
- 1楼网友:归鹤鸣
- 2021-12-20 10:15
1 当前类的一个当前对象
2 成员方法中可以无条件的调用同一个类的其他成员,默认以this.调用
- 2楼网友:一叶十三刺
- 2021-12-20 10:00
this表示当前对象!楼上的兄弟说错了~
看看这个
public class TestClass
{
int x,y;
void testShow(int x,int y){
this.x=x; //this.x 就是我们上 int x,y;中的X 。x是我们传来的x
this.y=y;
}
}
- 3楼网友:春色三分
- 2021-12-20 09:38
this 确实麻烦。他表示的是当前对象,对象象你知道的就有很多拉,变量拉,线程等等。
上面那个例子不错,不过为了让你更清楚一点,有几点经验:
1.This用来表示全局变量,全局变量你应该知道(那你应该就知道楼上那段代码的答案了);
2.看这里:
public class TestClass
{
int x;
int y;
static void showtest(TestClass tc){
System.out.println(tc.x+" "+tc.y);
}
void seeit(){
showtest(this);
}
public static void main(String[] args){
TestClass p=new TestClass();
p.x=9;
p.y=10;
p.seeit();
}
}
我不知道你是否理解这段代码中showtest(this),这里的this就是把当前实例化 的 p传给了showtest方法,从而就运行了。。
我觉得懂了这2点就可以理解(最起码读懂)大部分的代码了!
- 4楼网友:撞了怀
- 2021-12-20 09:01
Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final 使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。
package test;
public class ThisTest {
private int i=0;
//第一个构造器:有一个int型形参
ThisTest(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型形参
ThisTest(String s){
System.out.println("String constructor: "+s);
}
// 第三个构造器:有一个int型形参和一个String型形参
ThisTest(int i,String s){
this(s);//this调用第二个构造器
//this(i);
this.i=i++;//this以引用该类的成员变量
System.out.println("Int constructor: "+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);
//tt0.increment()返回一个在tt0基础上i++的ThisTest对象,
//接着又返回在上面返回的对象基础上i++的ThisTest对象!
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯