this在Java中的使用 方法与实例教程

1.this是指当前对象自己。
  当在一个类中要明确指出使用对象自己的的变量或函数时就应该加上this引用。如下面这个例子中:

 

 publicclassA{

  Strings="Hello";

  publicA(Strings){

  System.out.println("s="+s);

  System.out.println("1->this.s="+this.s);

  this.s=s;

  System.out.println("2->this.s="+this.s);

  }

  publicstaticvoidmain(String[]args){

  newA("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。如:

  

publicclassA{

  publicA(){

  newB(this).print();

  }

  publicvoidprint(){

  System.out.println("HellofromA!");

  }

  }

  publicclassB{

  Aa;

  publicB(Aa){

  this.a=a;

  }

  publicvoidprint(){

  a.print();

  System.out.println("HellofromB!");

  }

  }

  

运行结果:

  HellofromA!

  HellofromB!

  在这个例子中,对象A的构造函数中,用newB(this)把对象A自己作为参数传递给了对象B的构造函数。

  3.注意匿名类和内部类中的中的this。

  有时候,我们会用到一些内部类和匿名类。当在匿名类中用this时,这个this则指的是匿名类或内部类本身。这时假如我们要使用外部类的方法和变量的话,则应该加上外部类的类名。如下面这个例子:

  

publicclassA{

  inti=1;

  publicA(){

  Threadthread=newThread(){

  publicvoidrun(){

  for(;;){

  A.this.run();

  try{

  sleep(1000);

  }catch(InterruptedExceptionie){

  }

  }

  }

  };

  thread.start();

  }

  publicvoidrun(){

  System.out.println("i="+i);

  i++;

  }

  publicstaticvoidmain(String[]args)throwsException{

  newA();

  }

  }

时间: 2024-09-20 20:19:30

this在Java中的使用 方法与实例教程的相关文章

java中关于dismiss方法的使用

问题描述 java中关于dismiss方法的使用 myDialog.dismiss( )比如这条语句中是关闭一个对话框的意思吗dismiss还有哪些方面的应用 解决方案 看下这个函数的源码上面的注释信息,jdk源码上的英文注释就是很好的参考文档的. 解决方案二: 这和java语言没有关系,这只是dialog对象定义的方法罢了.你也可以写一个类,定义一个叫dismiss的方法. 在英文字面看来,dismiss就是消失的意思. 解决方案三: java中waitnotifynotifyAll的使用方法

java中this作为方法名的时候的问题,不知道我把它看成方法名正步正确

问题描述 java中this作为方法名的时候的问题,不知道我把它看成方法名正步正确 如下代码所示, public MyView(Context context) { this(context null); } //this在这里是方法吗,this是一个方法名吗? 解决方案 this用来调用你这个类中定义的一个构造方法 解决方案二: this不是方法名,而是Java中对当前对象的引用.例如当前对象的引用用this,父类对象的引用用super 解决方案三: 一个类中定义两个构造函数,在一个构造函数中

java中不能修饰方法不能修饰变量不能修饰类的关键词分别是什么

问题描述 java中不能修饰方法不能修饰变量不能修饰类的关键词分别是什么 java中不能修饰方法不能修饰变量不能修饰类的关键词分别是什么 实现现多个接口的类是不是必须重写其所有方法, 解决方案 首先,第一个问题,了解哪些关键词能修饰方法.变量.类比较容易些. 修饰方法的关键字:public/private/protected/default ,static, 修饰变量了:final ,static:修饰类的:public/private/protected/default,static 其次,实

如何理解java中 对象.this方法 还有 类.this.方法的 意义

问题描述 如何理解java中 对象.this方法 还有 类.this.方法的 意义 如何理解java中 对象.this方法 还有 类.this.方法的 意义 有没有这两种语法规则呢 解决方案 this.方法是在某个对象的实例方法内,this代表当前实例.一般情况下不用写,除非它和参数重名才需要: class A { int a; int b; public void seta(int a) { this.a = a; //因为参数a和成员变量a都叫a,所以需要区分. b = a; //相当于th

java中对象调用方法返回一个对象的问题

问题描述 java中对象调用方法返回一个对象的问题 例如session.createQuery(hql); 那么这条语句返回的对象属于哪个类呢,如何判断呢? 解决方案 ctrl加鼠标点击createQuery,会有返回方法,或者你在通过session点的时候也可以看到返回方法. 解决方案二: 按住ctrl点击方法,自己去看方法的返回值. 解决方案三: 在java中将一个对象的所有方法打印出来java中远程对象方法调用中的安全策略问题java中返回局部对象问题 解决方案四: 事实上他返回的还是qu

如何理解java中的某些方法不是线程安全的(不能同步访问)。

问题描述 如何理解java中的某些方法不是线程安全的(不能同步访问). 如何理解java中的某些方法不是线程安全的(不能同步访问). 能同步访问的方法有哪些,如何判断一个方法能不能同步访问 解决方案 不是线程安全的(不能同步访问) 你说反了.不是线程安全的才需要同步访问.同步访问的意思就是串行执行,等前面执行完了,再执行后面的. 线程不安全的场合很多,比如像操作系统中的用户界面.打印机等外设.控制台输出,都不允许并发(设想两个程序同时要输出文字到同一个屏幕,那还不乱套了) 在代码中,每个线程有自

java中有关get方法的使用(具体程序分析)

问题描述 java中有关get方法的使用(具体程序分析) 最近在学习java,用的徐彩霞的java基础教程. 有个例子不太明白. /* /注释部分的get部分有和没有结果一样,想知道为什么要用get? 又必须要用的情况吗? 刚学,懂得比较少,谢谢了~ class Person { private String name; private int age; private void talk() { System.out.print("I'm "+name+" and &quo

java中关于add方法的使用

问题描述 java中关于add方法的使用 add方法单独使用吗 一定要有对象吗,对象.add( ) add方法前面的对象的选取范围是什么,哪些类的对象才可以使用add方法 解决方案 可能你有点钻牛角尖了. add()方法跟其它方法在本质上并没有太大的区别,每个方法实现什么样的功能,也都是我们或者定义这个方法的人赋予的. 所有方法最终必须是基于类的,所以我们在调用方法的时候,才会有对象.add(),或者对象.remove()等 可能有的时候,你见到了一个方法使用的时候前边并没有对象或者类来调用,这

对象-java中重写equals方法为什么不直接在里面比较hashcode()?

问题描述 java中重写equals方法为什么不直接在里面比较hashcode()? 看书上说只要重写在一个类中重写equals方法,那就一定要重写hashcode方法,因为两个对象只要equals返回值为true,那么他俩的hashcode就一定相同. 那为什么不可以提前先写好hashcode函数,然后在equals函数里面直接来一行if(this.hashcode() == otherObject.hashcode()) return true;else return false;就行了?