TypechoJoeTheme

Clover 的博客

统计
登录
用户名
密码
/
注册
用户名
邮箱

CloverYou

日出于东却落于西,相识人海却散于席。

14、Java this关键字

2022-01-02
/
0 评论
/
25 阅读
/
正在检测是否收录...
01/02
  1. this是一个关键字,翻译为:这个
  2. this是一个引用,this是一个变量,this变量中保存了内存地址指向自身,this存储在JVM堆内存Java对象内部。
  3. 创建100个对象,每一个对象都有this,也就是说有100个不同的this
  4. 没有static关键字的方法被称为实例方法
  5. 没有static关键字的变量被称为实例变量
  6. 实例变量、实例方法在堆内存中存储,所以访问该数据的时候,必须先创建对象,通过引用方法访问。
  7. this可以出现在“实例方法”中,this指向当前正在执行的对象。(this代表当前对象)
  8. this在多数情况下都可以省略不写。

    • 用来区分局部变量和实例变量的时候this不能省略
  9. 如果一个程序执行过程中没有“当前对象”,因为带有static的方法是通过类名的方式访问的,或者说这个“上下文”当中没有"当前对象",自然也不存在this(this代表的是当前正在执行这个动作的对象)
  10. this不能使用在带有static方法中

例如以下没有当前对象程序:

public class User{
  public String name;
  public static String getName(){
    return this.name;
  }
}

以上程序在编译过程中报错connot be referenced from a static context.

name是一个实例变量,以上代码的含义是:访问当前对象的namegetName没有当前对象,自然也不能访问当前对象的name。如果static要访问实例变量,必须通过实例化对象访问。例如User u = new User();

以下程序不会出现空指针异常:

public class MainApplication{
  public static void main(String[] args){
    User u = new User();
    u = null;
    System.out.println(u.getName());
  }
}

class User{
  public static String getName(){
        return "getName";
  }
}

带有static的方法,其实既可以采用类名的方式访问,也可以采用引用的方式访问,但是即使采用引用的方式去访问,实际上执行的时候和引用指向的对象无关。

this 内存结构图

JAVA学习笔记
朗读
赞(0)
版权属于:

Clover 的博客

本文链接:

https://www.ctong.top/index.php/archives/21/(转载时请注明本文出处及文章链接)

评论 (0)
CloverYou
日出于东却落于西,相识人海却散于席。
88 文章数
11 评论量
IP信息

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

最新回复

  1. 缓存一致性 - 点击领取
    2022-01-06
  2. 宝宝
    2022-01-02

标签云