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方法具有全局函数的语义

JAVA笔记 -- this关键字的更多相关文章

  1. Java笔记 —— this 关键字

    Java笔记 -- this 关键字 h2{ color: #4ABCDE; } a{ color: blue; text-decoration: none; } a:hover{ color: re ...

  2. Java笔记:关键字

    关键字 描述 abstract 抽象方法,抽象类的修饰符 assert 断言条件是否满足 boolean 布尔数据类型 break 跳出循环或者label代码段 byte 8-bit 有符号数据类型 ...

  3. JAVA笔记4__static关键字/对象数组/foreach/方法的可变参数

    /** * static关键字:修饰属性(实质就是全局变量).方法(无需本类的对象即可调用此方法).类. * 1.static方法只能调用static方法 * 2.static方法只能访问static ...

  4. JAVA笔记4-static关键字

    1.static方法中不能使用this关键字 2.例题:static成员变量用于计数     

  5. JAVA笔记11-Final关键字

    相当于C++中的const (1)final的变量值(成员变量.局部变量(形参))不可被改变: (2)final的方法不能被重写: (3)final的类不能被继承.

  6. JAVA笔记3-this关键字

    1.          2.例题

  7. Java复习笔记--java中this 关键字

    Java中this关键字,this可以调用类的成员变量和成员方法,this还可以调用类中的构造方法.使用这种方式值得注意的是, 只可以在无参构造方法中的第一句使用this关键字调用有参构造方法. pu ...

  8. Thinking in Java 笔记

    大二就买了这本书,如今再看这本书,看到了一些以前没看的细节,也有了不同的体会.本文使用第4版,整理每章的笔记心得.老外的书有个特点,他会花费大量的文字去阐述一个概念,这比堆代码强多了. 第 1 章 对 ...

  9. TIJ读书笔记05-this关键字

    TIJ读书笔记05-this关键字 概述 this的用法 static方法 概述 两个对象同时调用一个方法,那么jvm怎么知道是哪个方法调用的呢. 我们在书写的时候会写成a.fun(1) 或者b.fu ...

随机推荐

  1. Latex学习与使用

    Table of Contents Latex学习与使用 简介 文档结构 排版 表格 图片 公式 索引 简介 Latex(发音lay-tek)是一个用来产生专业文档的系统,但它并不是一个单词处理器.它 ...

  2. C 语言输出不同颜色字体

    C 语言输出不同颜色字体 \033是8进制,它就是unix下终端转义符ESC(16进制1A,10进制27) ESC[xm 是unix下改变终端输出颜色的命令 所以,如果是红色,则我们定义为\033[0 ...

  3. linux命令-挂载命令

    一.挂载命令 1.mount 命令基本格式 linux 所有存储设备都必须挂载使用,包括硬盘 命令名称:mount 命令所在路径:/bin/mount 执行权限:所有用户 [root@localhos ...

  4. idea从mapper接口跳到xml文件

  5. C# IE环境 - 重置IE( 注册表)

    IE设置,都可以通过注册表,修改.以下是一些常用的IE设置注册表修改~ 检查证书吊销 /// <summary> /// 检查证书是否吊销 /// </summary> /// ...

  6. dataTable 表插入新行

    DataRow dr = dt.NewRow();//定义新行            dr["sumPrice"] = sumPrice;//对应字段赋值            d ...

  7. 【SDUT】2019SDUTACM第一次选拔赛 F- X的追求道路

    Problem Description X在大家的帮助下终于找到了一个妹纸,于是开始了漫漫的追求之路,那么大家猜一猜X能不能追的上呢? X初始对妹纸有一个心动值,妹纸对X有一个好感值,在追求时发生的的 ...

  8. SSM框架之SpringMVC(1)入门程序

    SpringMVC(1) 1.三层架构和MVC 1.1. 三层架构 咱们开发服务器端程序,一般都基于两种形式,一种C/S架构程序,一种B/S架构程序 使用Java语言基本上都是开发B/S架构的程序,B ...

  9. 网络编程~~~osi五层协议

    物理层 / 数据链路层 / 网络层 / 传输层 / 应用层(表示层/会话层) 一 物理层 物理层指的就是网线,光纤, 双绞线等物理传输介质 物理层发送的是数据(比特流) 二 数据链路层 数据链路层对数 ...

  10. 解决Flask和Django的错误“TypeError: 'bool' object is not callable”

    跟着欢迎进入Flask大型教程项目!的教程学习Flask,到了重构用户模型的时候,运行脚本后报错: TypeError: 'bool' object is not callable 这是用户模型: c ...