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. IMP-00009: abnormal end of export file解决方案

    一.概述 最近在测试环境的一个oracle数据库上面,使用exp将表导出没有问题,而将导出的文件使用imp导入时却出现了如下错误. IMP-00009: abnormal end of export ...

  2. 【NOI 2011】阿狸的打字机

    Problem Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有 \(28\) 个按键,分别印有 \(26\) 个小写英文字母和 B . P 两个字母. ...

  3. SSL/TLS 链接的建立/握手

    HTTPS 即 HTTP-within-SSL/TLS,其中 SSL/TLS 又分别表示: SSL:Secure Sockets Layer TLS:Transport Layer Security ...

  4. ASP.NET Core Web 应用程序系列(四)- ASP.NET Core 异步编程之async await

    PS:异步编程的本质就是新开任务线程来处理. 约定:异步的方法名均以Async结尾. 实际上呢,异步编程就是通过Task.Run()来实现的. 了解线程的人都知道,新开一个线程来处理事务这个很常见,但 ...

  5. Selenium(一):原理与安装、简单的使用

    1. selenium原理 1.1 selenium介绍 Selenium是一个Web应用的自动化框架. 通过它,我们可以写出自动化程序,像人一样在浏览器里操作web界面. 比如点击界面按钮,在文本框 ...

  6. url编码本质

    url编码本质 其实url本质就是将中文字符串进行utf8编码,然后得到编码后的对象转换字符串去掉开头的b'以及末尾的',然后再将\x转换成%,再将里面内容x变成e最后将字符串小写变成大写 举例 #拿 ...

  7. 使用策略模式重构switch case 代码

    目录 1.背景 2.案例 3.switch…case…方式实现 4.switch…case…带来的问题 5.使用策略模式重构switch…case…代码 6.总结 1.背景 之前在看<重构    ...

  8. 利用phpqrcode二维码生成类库合成带logo的二维码并且用合成的二维码生成海报(二)

    前期准备 引入phpqrcode类库(下载地址:https://download.csdn.net/download/weixin_37557729/11891240:支持彩色二维码的下载地址:htt ...

  9. spring mvc 源码简要分析

    关于web项目,运用比较多的是过滤器和拦截器 过滤器基于责任链设计模式 创建过滤器链 / Create the filter chain for this requestApplicationFilt ...

  10. 题解:A

    A (a.pas/c/cpp) [题目描述] 对于给定的一个正整数n, 判断n是否能分成若干个正整数之和 (可以重复) , 其中每个正整数都能表示成两个质数乘积. [输入描述] 第一行一个正整数 q, ...