网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  java中this的使用     
  文章作者:未知  文章来源:水木森林  
  查看:89次  录入:管理员--2007-11-17  
 
  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 = hello
  2 -> 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。
 
 
上一篇: microsoftvisualstudio.net系统必备    下一篇: javac/smode--client
  相关文档
java的网络功能与编程5 11-17
java多线程同步中的两个特殊类 11-16
java中的枚举器(反复器) 11-17
java的数据类型与方法重载 11-17
分享:让java程序带着jre一起上路 11-17
java编程中更新xml文档的常用方法介绍 11-16
escape 方法 11-16
java入门教程:第二章 11-17
基础:jsp和iis的最佳解决方案实例分析 01-29
使用httpurlconnection访问web页面 11-17
判断鼠标双击 11-17
很简短的几句就能访问文件输出文件 11-17
诊断和纠正java程序中反复出现的错误类型 11-17
java 程序初始化过程详解 11-17
java2html_src_0.8alpha源代码发布版(在线源代码生成器) 11-17
在linux下驱动stn彩色lcd 11-17
rational rose 2001安装手册 11-17
在coldfusion和j2ee之间共享数据 11-16
java编程中应用dom4j轻松地处理xml文档 11-16
java i/o api之性能分析 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息