浅谈 Java 中 this 的使用

来源:互联网 发布:台湾中央网络报 编辑:程序博客网 时间:2024/05/01 19:16
<script type="text/javascript">google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//</script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>谈谈 Java 中 this 的使用1. this是指当前对象自己。 当在一个类中要明确指出使用对象自己的的变量或函数时就应该加上this引用。如下面这个例子中:public class A { String s = "Hello"; public A(String s) { System.out.println("s = " s); System.out.println("1 -> this.s = " this.s); this.s = s; System.out.println("2 -> this.s = " this.s); } public static void main(String[] args) { new A("HelloWorld!"); }}运行结果:s = HelloWorld!1 -> this.s = Hello2 -> this.s = HelloWorld! 在这个例子中,构造函数A中,参数s与类A的变量s同名,这时如果直接对s进行操作则是对参数s进行操作。若要对类A的变量s进行操作就应该用this进行引用。运行结果的第一行就是直接对参数s进行打印结果;后面两行分别是对对象A的变量s进行操作前后的打印结果。2. 把this作为参数传递 当你要把自己作为参数传递给别的对象时,也可以用this。如:public class A { public A() { new B(this).print(); } public void print() { System.out.println("Hello from A!"); }}public class B { A a; public B(A a) { this.a = a; } public void print() { a.print(); System.out.println("Hello from B!"); }}运行结果:Hello from A!Hello from B! 在这个例子中,对象A的构造函数中,用new B(this)把对象A自己作为参数传递给了对象B的构造函数。3. 注意匿名类和内部类中的中的this。 有时候,我们会用到一些内部类和匿名类。当在匿名类中用this时,这个this则指的是匿名类或内部类本身。这时如果我们要使用外部类的方法和变量的话,则应该加上外部类的类名。如下面这个例子:public class A { int i = 1; public A() { Thread thread = new Thread() { public void run() { for(;;) { A.this.run(); try { sleep(1000); } catch(InterruptedException ie) { } } } }; thread.start(); } public void run() { System.out.println("i = " i); i ; } public static void main(String[] args) throws Exception { new A(); }} 在上面这个例子中, thread 是一个匿名类对象,在它的定义中,它的 run 函数里用到了外部类的 run 函数。这时由于函数同名,直接调用就不行了。这时有两种办法,一种就是把外部的 run 函数换一个名字,但这种办法对于一个开发到中途的应用来说是不可取的。那么就可以用这个例子中的办法用外部类的类名加上 this 引用来说明要调用的是外部类的方法 run。
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 惊!她能穿梭时空 幕后黑手从创造怪谈开始 文娱从逃婚开始 我,神明,救赎者 大唐:纨绔皇子,被李二偷看日记 我老公明明很强却过于低调 无限进化从神梯开始 港综:从拜师龙四开始 长夜行 苏醒后,异能大佬被夫人娇养了 全球轮回:开局花光十个亿 在下,中医黄素 我真的控制不住自己 从超神开始的地球护卫队 奶爸搬运工 洪荒:我的仆人都成圣了 霸天武魂 绿龙博士 盗墓:开局青龙血脉 大军师联盟 反派就很无敌 红楼蓉大爷 重生就得支棱起来啊 侯门贵妾 人在神诡,肉身无限推演 我家忍猫嫌我弱,偷来响雷果实 偏执占有:陆先生,我们结婚吧 美人羸弱不可欺 穿成反派下堂妻 福宝重生,拯救八零大佬 重生之实业大亨 这就是牌佬的世界吗?亚达贼! 诡异修仙:我努力就能变强 斗破之我的马甲都成帝了 建座基地渡末世 洪荒:我食铁兽,被后土偷听心声 斗破从俘获女神开始 综艺出道,我成了娱乐圈全能大佬 西游:开局让观音选择三个石猴 柯南之我不是蛇精病 恶魔的异界征途