java中this的用法示例(关键字this)

 更新时间:2014年03月28日 10:23:47   作者:  
这篇文章主要介绍了java中this的用法示例(关键字this),需要的朋友可以参考下

this是指向本身的隐含的指针,简单的说,哪个对象调用this所在的方法,那么this就是哪个对象。

示例代码: TestThis_1.java

复制代码 代码如下:

/* 问题:什么是this
 * 输出结果:
 * A@4e44ac6a
 */

public class TestThis_1 {
    public static void main(String[] args) {
        A aa = new A();
        System.out.println(aa.f()); //aa.f(), 返回aa这个对象的引用(指针)
    }  
}

class A {
    public A f() {
        return this;  //返回调用f()方法的对象的A类对象的引用
    }  
}

this的常见用法

1. 区分同名变量

示例代码: TestThis_2.java

复制代码 代码如下:

/* this的常见用法1:区分同名变量
 * 输出结果:
 * this. i = 1
 * i = 33
 */
public class TestThis_2 {
    public static void main(String[] args) {
        A aa = new A(33);
    }  
}

class A {
    public int i = 1;                                           //这个i是成员变量

    /*注意:一般不这么写,构造函数主要是为了初始化,这么写主要是为了便于理解*/
    public A(int i) {                                           //这个i是局部变量
        System.out.printf("this. i = %d\n", this.i);            //this.i指的是对象本身的成员变量i
        System.out.printf("i = %d\n", i);                       //这里的i是局部变量i
    }  
}

2. 构造方法间的相互调用

示例代码: TestThis_3.java

复制代码 代码如下:

/* this的常见用法2: 构造方法中互相调用*/
public class TestThis_3 {
    public static void main(String[] args) {

    }  
}

class A {
    int i, j, k;
    public A(int i) {
        this.i = i;
    }  

    public A(int i, int j) {
        /* i = 3;  error   如果不注释掉就会报错:用this(...)调用构造方法的时候,只能把它放在第一句
         * TestThis_3.java:20: error: call to this must be first statement in constructor
         *      this(i);
         *                  ^
         *                  1 error
         */
        this(i);   
        this.j = j;
    }  

    public A(int i, int j, int k) {
        this(i, j);
        this.k = k;
    }  
}

注意事项

被static修饰的方法没有this指针。因为被static修饰的方法是公共的,不能说属于哪个具体的对象的。

示例代码: TestThis_4.java

复制代码 代码如下:

/*static方法内部没有this指针*/
public class TestThis_4 {
    public static void main(String[] args) {

    }  
}

class A {
    static A f() {
        return this;
        /* 出错信息:TestThis_4.java:10: error: non-static variable this cannot be referenced from a static context
         *          return this;
         *                     ^
         *                     1 error
         */
    }  
}

相关文章

  • 图片验证码概述及实现步骤

    图片验证码概述及实现步骤

    本文主要介绍了图片验证码概述及实现步骤。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • SpringBoot+Vue实现数据添加功能

    SpringBoot+Vue实现数据添加功能

    这篇文章主要介绍了SpringBoot+Vue实现数据添加功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Springboot+AOP实现返回数据提示语国际化的示例代码

    Springboot+AOP实现返回数据提示语国际化的示例代码

    这篇文章主要介绍了Springboot+AOP实现返回数据提示语国际化的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • js+java实现登录滑动图片验证

    js+java实现登录滑动图片验证

    这篇文章主要为大家详细介绍了js+java实现登录滑动图片验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Java中BitMap(位图)hutool版、IntMap、LongMap示例详解

    Java中BitMap(位图)hutool版、IntMap、LongMap示例详解

    这篇文章主要给大家介绍了关于Java中BitMap(位图)hutool版、IntMap、LongMap的相关资料,通过位运算高效存储和检索整数,相比于传统数组,它们在内存占用和性能上都有显著优势,需要的朋友可以参考下
    2024-12-12
  • java 字符串池的深入理解

    java 字符串池的深入理解

    这篇文章主要介绍了java 字符串池的深入理解的相关资料,这里提供实例代码帮助大家学习理解这部分内容,希望大家能够掌握,需要的朋友可以参考下
    2017-08-08
  • 详解SpringBoot中@NotNull,@NotBlank注解使用

    详解SpringBoot中@NotNull,@NotBlank注解使用

    这篇文章主要为大家详细介绍了Spring Boot中集成Validation与@NotNull,@NotBlank等注解的简单使用,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-08-08
  • java实现树形菜单对象

    java实现树形菜单对象

    这篇文章主要为大家详细介绍了java实现树形菜单对象,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • 如何将Mybatis连接到ClickHouse

    如何将Mybatis连接到ClickHouse

    这篇文章主要介绍了如何将Mybatis连接到ClickHouse,帮助大家更好得理解和学习使用Mybatis,感兴趣的朋友可以了解下
    2021-03-03
  • 利用Stream聚合函数如何对BigDecimal求和

    利用Stream聚合函数如何对BigDecimal求和

    这篇文章主要介绍了利用Stream聚合函数如何对BigDecimal求和问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05

最新评论