当前位置:  编程技术>java/j2ee

关于JAVA中this的使用方法小结

    来源: 互联网  发布时间:2014-10-28

    本文导语:  我知道很多朋友都和我一样:在JAVA程序中似乎经常见到“this”,自己也偶尔用到它,但是到底“this”该怎么用,却心中无数!很多人一提起它,就说“当前对象”,可到底什么是当前对象,是什么当前对象,他自己也不清楚...

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

代码如下:

/**

 * @author fengzhi-neusoft

 *

 * 本示例为了说明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对象!

    }

}

运行结果:

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

String constructor:  ok

String constructor:  ok again!

Int constructor:  21

String constructor:  ok again!

14

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

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

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

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

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


    
 
 

您可能感兴趣的文章:

  • jsp中调用java代码小结
  • Java实现字符串倒序输出的常用方法小结
  • Java事务的个人理解小结
  • JAVA中字符串函数subString的用法小结
  • Java的关键字与保留字小结
  • JAVA中STRING的常用方法小结
  • java中的快捷键小结
  • java时间相关处理小结
  • JAVA中不赞成使用(Deprecated)的方法是否可以使用
  • java堆栈类使用实例(java中stack的使用方法)
  • 如何将GTK中的CallBack函数封装成类似JAVA接口类的使用方法
  • java用静态工厂代替构造函数使用方法和优缺点
  • Java中的this指针使用方法分享
  • Java输入流Scanner/BufferedReader使用方法示例
  • 谁能告诉我哪里能找到java包内部类及方法使用介绍
  • java.exe和javaw.exe的区别及使用方法
  • Java Swing 非常漂亮外观Nimbus的使用方法实例
  • java使用正则表达为数字添加千位符的简单方法
  • java this super使用方法详解
  • java的split方法使用示例
  • 请问Adapter类在整个Java API中的位置是?以及它的作用和使用方法?
  • java system类使用方法示例 获取系统信息
  • 请教:使用java.net中httpURLConnection类模拟post方法?、、全部分数送上!
  • ?请教:十万火急使用java.net中httpURLConnection类模拟post方法?、、全部分数送
  • Java使用JNI方法调用DLL问题
  • 请问在java中有没有在dos下接受键盘输入的方法,如何使用?谢谢
  • java线程之使用Runnable接口创建线程的方法
  • java中"==" 与equals方法的使用
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.lang类runtime的类成员方法: runfinalization定义及介绍
  • Java中如何通过方法名动态调用方法?
  • java命名空间java.awt.im类inputcontext的类成员方法: getinputmethodcontrolobject定义及介绍
  • <%@ page import="java.lang.Math"%>后用round(float a)方法,怎么报找不到round方法?
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • java初学--在java中有个native本地方法 说是能嵌入c 不知道具体?
  • java命名空间java.lang类system的类成员方法: runfinalization定义及介绍
  • 在JAVA中只有一种派生子类的方法吗?我记得在C++ 中有3种派生方法的!
  • java命名空间java.lang类stacktraceelement的类成员方法: isnativemethod定义及介绍
  • java根据方法名称取得反射方法的参数类型示例
  • java命名空间java.lang类stacktraceelement的类成员方法: getmethodname定义及介绍
  • 请问java.sql包中 preparedStatement 对象的setString(int parameterIndex,java.lang.String x)方法怎么用? iis7站长之家
  • java命名空间java.awt.im.spi接口inputmethod的类成员方法: dispose定义及介绍
  • java.util类对象的DATE方法为何不能用? <%=new java.util.date()%>,在页面中是这样写的,服务器用的是Resin.
  • java命名空间java.net类httpurlconnection的类成员方法: getrequestmethod定义及介绍
  • 有没有一种工具可以让java自动调出类的方法、成员?就像Delphi一样,写完Edit1.系统会跳出一些TEdit的属性、方法。
  • java命名空间java.security类policyspi的类成员方法: enginerefresh定义及介绍
  • 各位高手知道在JAVA中如何用一个名称创建一个对象实例,并调用其方法,注意:在编写代码时并不知要创建的对象的类名,也并不知方法名
  • java命名空间java.awt.im.spi接口inputmethod的类成员方法: getcontrolobject定义及介绍
  • java 与 C++ 实现后绑定的方法
  • java命名空间java.security类policy的类成员方法: refresh定义及介绍
  • JAVA里面的方法是怎么样把参数值返回?
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3