zoukankan      html  css  js  c++  java
  • java中this的用法

    在JAVA程序中似乎经常见到“this”,自己也偶尔用到它,但是到底“this”该怎么用,却心中无数!很多人一提起它,就说“当前对象”,可到底什么是当前对象,是什么当前对象,他自己也不清楚。现在让大家看一个小例子,给你分享一下JAVA中“this”的用法!

    /**

     * @author fengzhi-neusoft

     *  * 本示例为了说明this的三种用法!

     */

    package test;

    public classThisTest {

    private int i=0;

        //第一个构造器:有一个int型形参

        ThisTest(int i){

           this.i=i+1;//此时this表示引用成员变量i,而非函数参数i

           System.out.println("Int constructori——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("Stringconstructor:  "+s);

        }

        //  第三个构造器:有一个int型形参和一个String型形参

        ThisTest(int i,String s){

           this(s);//this调用第二个构造器

           //this(i);

           /*此处不能用,因为其他任何方法都不能调用构造器,只有构造方法能调用他。

           但是必须注意:就算是构造方法调用构造器,也必须为于其第一行,构造方法也只能调

           用一个且仅一次构造器!*/

           this.i=i++;//this以引用该类的成员变量

           System.out.println("Intconstructor: "+i+" "+"String constructor:  "+s);

        }

        public ThisTest increment(){

          this.i++;

           return this;//返回的是当前的对象,该对象属于(ThisTest)

        }

        public static void main(String[] args){

           ThisTest tt0=new ThisTest(10);

           ThisTest tt1=newThisTest("ok");

           ThisTest tt2=new ThisTest(20,"okagain!");

          

          System.out.println(tt0.increment().increment().increment().i);

           //tt0.increment()返回一个在tt0基础上i++的ThisTest对象,

           //接着又返回在上面返回的对象基础上i++的ThisTest对象!

        }

    }

    运行结果:

    Int constructori——this.i:  10——11

    Stringconstructor:  ok

    Stringconstructor:  ok again!

    Intconstructor:  21

    Stringconstructor:  ok again!

    14

    细节问题注释已经写的比较清楚了,这里不在赘述,只是总结一下,其实this主要要三种用法:

    1、表示对当前对象的引用!

    2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。

    3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!

    还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!

  • 相关阅读:
    导包路径
    django导入环境变量 Please specify Django project root directory
    替换django的user模型,mysql迁移表报错 django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependen cy user.0001_initial on database 'default'.
    解决Chrome调试(debugger)
    check the manual that corresponds to your MySQL server version for the right syntax to use near 'order) values ('徐小波','XuXiaoB','男','1',' at line 1")
    MySQL命令(其三)
    MySQL操作命令(其二)
    MySQL命令(其一)
    [POJ2559]Largest Rectangle in a Histogram (栈)
    [HDU4864]Task (贪心)
  • 原文地址:https://www.cnblogs.com/liaoliao/p/5009140.html
Copyright © 2011-2022 走看看