永发信息网

JAVA(this用法)

答案:5  悬赏:20  手机版
解决时间 2021-12-21 04:14
如题,请大家详细的教我一下this的用法,我老是搞不懂这个!
顺便希望大家能给出一点简单的实例`进一步分析一下THIS的用法!
最佳答案
这个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,没错。
全部回答
1 当前类的一个当前对象 2 成员方法中可以无条件的调用同一个类的其他成员,默认以this.调用
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; } }
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点就可以理解(最起码读懂)大部分的代码了!
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对象! } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中国财政(中国土地二甲国土资源所东南)在什么
自由女神像为何立在纽约市中心
固邑小学三年级上册科学书上的小人怎么画
-What were you saying just now? ----. Let
逆战,烈焰战魂被动技能有什么用???
好不容易有今天,可惜我已不再少年
单选题She admitted _________ a&
便扶向路的扶的意思
怎么绑定老公的社保卡
有在捷信公司贷款过的吗?真的可靠吗?
海门市国土资源局社会矛盾纠纷调处工作站办公
若x3+(m+1)x2+x+2没有二次项,则m=________
梦幻西游手游绑定了身份证还能卖吗
, or we will be late for the meeting!A. Mo
正数负数和零的绝对值分别是怎样的
推荐资讯
长沙有到万州的长途汽车么?
已知f(x)=2x+3,则f(1)=________,f[f(1
噪的意思是什么
为什么感觉ZOOMAIR很硬啊?
David_________Shanghaiformorethant
丑奴儿书博山道中壁
女的说男的不正经什么意思
南京江宁到黄山多少公里
星期一到星期天的英语分别是什么怎么读
4、你知道最早的粽子是产于哪个时期吗
残疾人可以开车营运不?全国实施的吗?
已知△ABC的两条高线的长分别为5和20,若第三
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?