this关键字

一、 基本作用

在当前方法内部,获得当前对象的引用。在引用中,调用方法不必使用this.method()这样的形式来说明,因为编译器会自动的添加。

必要情况

  1. 为了将对象本身返回
    public class Leaf{
    int i = 0;
    Leaf increment(){
    i++;
    return this; //明确指出当前对象引用,返回当前对象
    }
    }
  2. 引用外部工具传递方法时,为了将自身传递到外部方法
     class Peeler{
    static Apple peel(Apple apple){
    //remove pell
    return apple;
    }
    }
    class Apple{
    Apple getPeeled(){
    return Peeler.peel(this); //这里的this是必要的,将自身传递给外部方法
    }
    }

二、 在构造器中调用构造器

一个类可能有很多个构造器(重载构造器),如果在一个构造器中调用另一个构造器,避免重复代码,就可以调用其他构造器。这时,就需要this关键字。

  1. 调用构造器的时候,必须放在起始处
     class CallConstructor(){
    CallConstructor(int i){
    System.out.println(i);
    }
    CallConstructor(String str){
    this(6); //一定要放在起始处
    System.out.println(str);
    //! this(6); //放在这里,编译器会报错
    }
    }
  2. 调用构造器的时候,能调用一次
     class CallConstructor(){
    CallConstructor(int i){
    System.out.println(i);
    }
    CallConstructor(double n){
    System.out.println(n);
    }
    CallConstructor(String str){
    this(6); //一定要放在起始处
    //! this(1.0); //放在这里编译器会报错,不可以调用两次
    //其实说白了也是调用构造器的时候,一定要放在开头
    System.out.println(str);
    }
    }
  3. 除了构造器之外,其他方法禁止调用构造器
     class CallConstructor(){
    CallConstructor(int i){
    System.out.println(i);
    }
    CallConstructor(double n){
    System.out.println(n);
    }
    void CommMethod(){
    //! this(6); //这是错误的!一定不可以这么写
    System.out.println("Common Method");
    }
    }

三、 static的含义

static顾名思义,就是静态的意思。这个关键字还会在后续继续探究。

  1. static方法

    static方法就是没有this的方法。static方法不能调用非静态方法,反过来是可以的。

  2. static方法具有全局函数的语义

最新文章

  1. 十二 .ocBlock
  2. 细说angular Form addControl方法
  3. A/D转换实验
  4. 【读书笔记《Android游戏编程之从零开始》】3.Android 游戏开发常用的系统控件(Button、Layout、ImageButton)
  5. bzoj 3551 [ONTAK2010]Peaks加强版(kruskal,主席树,dfs序)
  6. 海量Office文档搜索
  7. iOS中判断消息推送是否打开
  8. MT9v024总结
  9. innerhtml和innertext的用法以及区别
  10. 【Android Developers Training】 19. 序言:通过Fragments构建动态UI
  11. 解决asp.net MVC中 当前上下文中不存在名称“model” 的问题
  12. [LeetCode] Card Flipping Game 翻卡片游戏
  13. Visual Studio Code 支持TensorFlow配置支持
  14. 总结几个常用的系统安全设置(含DenyHosts)
  15. Python的getpass模块
  16. 你真的会用Gson吗?Gson使用指南(4)
  17. POJ 1743 Musical Theme (字符串HASH+二分)
  18. MongoDB学习笔记(3)--删除数据库
  19. df and du
  20. Mybatis联合查询记录,左连接参数操作

热门文章

  1. linux自建https证书
  2. python 读取ini 配置文件
  3. JavaScript 引擎 V8 执行流程概述
  4. [CrackMe]160个CrackMe之015
  5. 基于STM32F429的ADS1115驱动程序
  6. Git - Git分支管理策略
  7. Access Editor Settings 访问编辑器设置
  8. Java日期处理组件joda-time
  9. iOS sqlite ORM框架-LKDBHelper
  10. 解决MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.问题