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 学习率设置「建议收藏」

    keras 学习率设置「建议收藏」转载自https://blog.csdn.net/zzc15806/article/details/79711114Keras提供两种学习率适应方法,可通过回调函数实现。1.LearningRateSchedulerkeras.callbacks.LearningRateScheduler(schedule)该回调函数是学习率调度器.参数   schedule:函数,该函数…

    2022年5月23日
    29
  • java 代码中sql模糊查询Like拼接

    java 代码中sql模糊查询Like拼接Like模糊查询拼接:StringBuilderstringBuilder=newStringBuilder();stringBuilder.append(“selectu.*fromepai_sys_useru”);//写?是可以的是没问题的stringBuilder.append(“whereu.display_nameLikeconcat(‘%’,…

    2022年6月1日
    134
  • html5表格内容怎么居中_html表格上下居中

    html5表格内容怎么居中_html表格上下居中回答:IE6/7及IE8混杂模式中,text-align:center可以使块级元素也居中对齐。其他浏览器中,text-align:center仅作用于行内内容上。解决这个问题比较好的方式,就是为所有需要相对父容器居中对齐的块级元素设置“margin-left:Auto;margin-right:Auto”。但这个方式IE6/IE7/IE8的混杂模式中不支持,所以还要设置父容器的”text…

    2025年11月20日
    3
  • Oracle数据库备份与还原

    Oracle数据库备份与还原Oracle数据库备份与还原一、逻辑备份1.某一用户(DBA权限)全库备份:2.某一用户(DBA权限)备份库中某些用户:3.某一用户备份自身:4.某一用户备份自身某些表对象:5.某一用户(具有DBA权限)备份其他用户某些表对象:二、逻辑还原1.使用全库备份文件还原:①使用全库备份文件还原库:②使用全库备份文件还原库内某些用户(被还原用户应存在):③使用全库备份文件还原库内某些用户某些表:2.使用某些用户备份文件还原:①使用某些用户备份文件还原库内某些用户(被还原用户应存在):②使用某些用户备份文件还原库内某

    2022年7月12日
    19
  • 什么是NoSQL,为什么要使用NoSQL?

    什么是NoSQL,为什么要使用NoSQL?1 为什么用 NoSQL 1 1 单机 MySQL 的美好时代在 90 年代 一个网站的访问量一般都不大 用单个数据库完全可以轻松应付 在那个时候 更多的都是静态网页 动态交互类型的网站不多 上述架构下 我们来看看数据存储的瓶颈是什么 DAL DataAccessLa 数据访问层 Hibernate MyBatis 数据量的总大小一个机器放不下时 数据

    2025年7月24日
    2
  • Android 使用substring截取字符串

    Android 使用substring截取字符串请看如下代码://截取第一个字符StringNumOne=”A01013″.substring(0,1);//截取第一个字符之后的所有字符StringLastData=”A01013″.substring(1);StringNumOne1=”你好!”.substring(0,2);StringLastDataNew=LastData.replaceAll(“(.{1})”,”$1-“);//加入’-‘符.

    2022年5月23日
    31

发表回复

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

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