Java中的this指针

Java中的this指针AlienTechforbetterlife!~

大家好,又见面了,我是你们的朋友全栈君。

    在Java中,提到this谁都不会陌生,这里再简单整理下,备忘。

    Java中,一般来说this指针指的是当前正在访问的这段代码的对象,但是如果在内部类中需要使用外部类中的对象,这时就需要使用外部类的类名进行限定。这种方式在Android开发中也比较常见。

    @Author: twlkyao

package twlkyao;

public class A { 
    public A() { 
        Inner inner = new Inner();
        inner.outer(); // call the inner class's outer method.
        this.outer(); // call A's outer method.
    } 
    
    public void outer() { 
        System.out.println("outer run");
    } 

    class Inner {
        public void outer(){
            System.out.println("inner run");
            A.this.outer(); // call A's outer method.
            System.out.println("--------");
        }
    }
    
    public static void main(String[] args) {
    	A a = new A();
    }
} 

    Inner是内部类,访问类A中的outer()方法,又由于匿名内部类中有同样的方法,所以需要使用A的this指针进行限定。

    输出结果为:

inner run
outer run
——–
outer run

    另外,在构造方法中,经常使用this(参数表)来调用参数多的构造方法(和Swift中的convenience initializer类似,在Swift中,convenience initializer必须调用或者说代理给designated initializer),并且Java要求在构造方法中,this(参数表)要出现在任何其他语句之前。

public class Circle {
    	private double radius;
    	
    	public Circle(double radius) {
    		this.radius = radius;
    	}
    	
    	public Circle() {
    		this(1.0); // call the upper initializer.
    		this.radius = 2.0; // just to indicate that the this(parameters...) must be called first.
    	}
    }

    在如上代码中,无参构造函数,调用有参构造函数。在无参构造函数中再次修改radius只是为了说明在构造方法中,this(参数表)要出现在任何其他语句之前。

    参考资料:

    http://bbs.csdn.net/topics/260050701

    《Java语言程序设计——基础篇》


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145750.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用Keras实现 基于注意力机制(Attention)的 LSTM 时间序列预测

    时隔半年多,毕设男孩终于重操旧业,回到了LSTM进行时间序列预测和异常检测的路上。如果有阅读过我之前的博客,可以发现使用LSTM作单类的时间序列异常检测也是基于对于时间序列的预测进行登堂入室LSTM:使用LSTM进行简单的时间序列异常检测本次我们要进行的是使用注意力机制+LSTM进行时间序列预测,项目地址为KerasAttentionMechanism首先我们把它git…

    2022年4月6日
  • 500-内部服务器错误_win7无法启动server服务错误1083

    500-内部服务器错误_win7无法启动server服务错误1083我们在操作win10系统电脑的时候,常常会遇到win10系统提示http500内部服务器错误的情况,想必大家都遇到过win10系统提示http500内部服务器错误的情况吧,那么应该怎么处理win10系统提示http500内部服务器错误呢?我们依照在ie浏览器中点击右上角的设置按钮,在弹出的菜单中点击“internet选项”按钮;在internet选项界面切换到【高级】选卡;这样的步骤就行…

    2022年8月12日
  • Java对象数组

    Java对象数组所谓的对象数组,就是指包含了一组相关的对象,但是在对象数组的使用中一定要清楚一点:数组一定要先开辟空间,但是因为其是引用数据类型,所以数组里面的每一个对象都是null值,则在使用的时候数组中的每一个对象必须分别进行实例化操作。 对象数组的声明先定义,再开辟空间类名称对象数组名[]=null;对象数组名=new类名称[长度]; 定义并开辟数组类名称对象数…

    2022年5月5日
  • @scheduled注解 定时任务控制(Spring响应式编程)

    概念项目经常会用到定时任务,实现定时任务的方式有很多种,参考Spring定时任务的几种实现。在Spring框架中,实现定时任务很简单。常用的实现方式是使用注解@Schedule。@Schedule常用来实现简单的定时任务。例如凌晨1点跑批,每1小时更新订单状态等。非SpringBoot项目springmvc-servlet.xml中添加配置<!–xmlns加入–>…

    2022年4月16日
  • 什么是第一,第二,第三范式

    什么是第一,第二,第三范式我们在数据库表设计时,经常说,某某表要遵循第三范式。下面通过实例介绍第一,第二,第三范式第一范式所谓第一范式,就是数据表的列不可再分。看下面数据表,对于选课列明显是可以再分的,所以它是违反第一范式的。学号姓名选课10001张三数学,语文,英语10002

    2022年5月23日
  • 常用的数据库函数_数据库中自定义函数

    常用的数据库函数_数据库中自定义函数1.COALESCE();很多人知道ISNULL函数,但是很少人知道Coalesce函数,人们会无意中使用到Coalesce函数,并且发现它比ISNULL更加强大,其实到目前为止,这个函数的确非常有用。返回其参数中第一个非空表达式语法:COALESCE(expression[,…n])如果所有参数均为NULL,则COALESCE返回NULL。至少应有一个Null…

    2022年10月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号