相关文章

更多>

最新资讯

更多>
  • win10系统关闭时间轴功能的两种操作方法

        关闭时间轴功能的两种操作方法:一、组策略方式 本方法适用于有组策略编辑器的Win10专业版/企业版/教育版。通过组策略编辑器,定位至“计算机配置 - 管理模板 - 系统 - OS策略”。然后在右侧窗口中找到“启用活动源(ActivityFeed)”配置项将配置项修改为“已禁用”应用确定就可以解决了。

  • 在Word中编辑公式,不用从外部打开MathType软件的方法

        MathType是一个很强大的编辑公式的工具。这里给大家介绍一种在Word中编辑公式,不用从外部打开MathType软件的方法。

  • 云计算技术的现况

        在科研领域可以通过云计算进行地震监测、海洋信息监控、天文信息计算处理;在网络安全防护上可以通过云计算进行病毒库存储、垃圾邮件屏蔽。

  • MySQL数据库的几点改善

        避免SELECT * 从数据库里读出越多的数据,那么查询就会变得越慢。只要一行数据时使用LIMIT 1 MySQL数据库引擎会在查找到一条数据后停止搜索,而不是继续往后查询下一条符合条件的数据记录。

  • 开发人员对无服务器计算仍在摸索

        所谓的无服务器计算并不是完全没有服务器的存在,但它使开发人员能够设置事件触发器,并将基础架构方面的需求交给了云提供商。供应商提供了正确的计算规模,存储和内存。

首页> 知识分享> JAVA框架> 【ijava学习网推荐】Java之this用法

【ijava学习网推荐】Java之this用法

时间: 2018-07-12 14:07:34 标签reference , 方法 , List , static , 面向对象 , 调用 , Public , 解决 , 函数 , 解决方法 , 语言 , 特点 , System.out , String , 输出


我们都知道执行一个方法的时候,要用object.method(type list)。这种写法符合面向对象编程的特点:将信息输入到一个实例化的对象(object)里面。实际上这种写法纯粹是为了体现面向对象编程而作出的调整,程序实际执行的时候是这样:class.method(object, type list),即对class调用方法,reference(object)和type list是变量,它俩作为变量输入进class.method里面。注意:Java里面不允许按照后者风格来写。

由此可以看出一点,每当调用方法(non-static)的时候,除了type list以外,还必须明确传达reference,不然机器不知道到底要操作哪一个object。注意:static方法由于不牵扯具体的object,所以不需要手动给reference,程序自动就给加上了。

当我们实例化一个对象的时候(new一个啥),我们可以用一个代号保存一下指向这个object的reference。注意:new Class()实际上就是个reference,前面的代号就表示以后我们可以凭此找到该reference(如果不用代号保存这些reference以后就接触不到了,因此导致无法直接操作其指向的object)。实例化以后,代号表示reference,再加上type list,我们可以用面向对象风格的语言,执行方法。没毛病。

但如果我们想在class层面上(未实例化之前),使用未来的reference做些事情,如何解决?

解决方法是this,this正是未来object的reference。例如:

public class Apricot
{
    void pick() {}
    void pit() { pick(); }
}

第一个函数好说,实例化以后的reference(假设叫a)加type list(本例无)俩条件可以解决。第二个函数pit()实例化后两条件也是一样,而pit()里面的pick()的reference是谁?很明显该reference也正是a,我们可以手动输入(用this.pick();),也可以不用(Java自会帮我们将其添加进去)。虽然这种情况下不推荐用this(但凡Java帮忙自动加的情况都不要手动this),但通过此例可以感觉到this的存在。

再看另外两个例子:

public class Leaf
{
    int i = 0;
    Leaf increment()
    {
        i++;
        //返回的正是x代表的reference。
        return this;
    }
    
    void print()
    { System.out.println("i = " + i); }
    
    public static void main(String[] args)
    {
        //实例化Leaf,x表示该实例(object)的reference。
        Leaf x = new Leaf();
        //4次调用方法,reference均是同一个。
        x.increment().increment().increment().print();
    }
}

输出结果:

i = 3



                            阅读更多

版权说明| 关于我们| 合作伙伴| 联系我们| 网站地图| 招贤纳士

Copyright © 2017 www.ijava.com All Rights Reserved 版权所有•ijava学习网 京ICP备14061482号-18         官方QQ:3325669927

ijava学习网提供免费java教程和大量java面试题库,给高级会员提供免费的java培训,同时提共一些java开发项目和java下载,java工程师,java菜鸟们快来哦。记住我们的网站:www.ijava.com