0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

this关键字在Java中的用法

科技绿洲 来源:Java技术指北 作者:Java技术指北 2023-10-10 16:49 次阅读

this 关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。

其实简单来说 this 关键字就是表示当前对象,下面我们来具体介绍 this 关键字在Java中的用法。

1、调用成员变量

在一个类的方法内部,如果我们想调用其成员变量,不用 this,我们会怎么做?

package com.ys.test;

/**
 * Create by YSOcean
 */
public class ThisTest {

    private String name = "Tom";

    public void  setName(String name){
        name = name;
    }

    public String getName() {
        return name;
    }

}

看上面的代码,我们在 ThisTest 类中创建了一个 name 属性,然后创建了一个 setName 方法,注意这个方法的形参也是 String name,那么我们通过 name = name 这样赋值,会改变成员变量 name 的属性吗?

public static void main(String[] args) {
       ThisTest tt = new ThisTest();
       tt.setName("Marry");
       System.out.println(tt.getName());//Tom
   }

打印结果是 Tom,而不是我们重新设置的 Marry,显然这种方式是不能在方法内部调用到成员变量的。因为形参的名字和成员变量的名字相同,setName 方法内部的 name = name,根据最近原则,编译器默认是将这两个 name 属性都解析为形参 name,从而导致我们设值操作和成员变量 name 完全没有关系,当然设置不了。

解决办法就是使用 this 关键字。我们将 setName 方法修改如下:

public void  setName(String name){
       this.name = name;
   }

在调用上面的 main 方法进行赋值,打印的结果就是 Marry 了。

this 表示当前对象,也就是调用该方法的对象,对象.name 肯定就是调用的成员变量。

2、调用构造方法

构造方法是与类同名的一个方法,构造方法没有返回值,但是也不能用 void 来修饰。在一个类中,必须存在一个构造方法,如果没有,编译器会在编译的时候自动为这个类添加一个无参构造方法。一个类能够存在多个构造方法,调用的时候根据参数来区分。

package com.ys.test;

/**
 * Create by YSOcean
 */
public class ThisTest {
    private String name;

    public ThisTest(){
        this("Marry");
    }
    public ThisTest(String name) {
        this.name = name;
    }
}

通过 this("Marry") 来调用另外一个构造方法 ThisTest(String name) 来给成员变量初始化赋值。

注意:通过 this 来调用构造方法,只能将这条代码放在构造函数的第一行,这是编译器的规定,如下所示:放在第二行会报错。

图片

3、调用普通方法

this 表示当前对象,那么肯定能够调用当前类的普通方法。

public void printName(){
    this.say();
}

public void say(){
    System.out.println("say method...");
}

第 2 行代码,在 printName() 方法内部调用了 say() 方法。

4、返回当前对象

/**
 * Create by YSOcean
 */
public class ThisTest {

    public Object newObject(){
        return  this;
    }
}

这表示的意思是谁调用 newObject() 方法,那么就返回谁的引用。

5、小结

好了,这就是Java中对 this 关键词的介绍,记住一句话 this 代表的就是当前。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2954

    浏览量

    104511
  • 参数
    +关注

    关注

    11

    文章

    1769

    浏览量

    32060
  • 代码
    +关注

    关注

    30

    文章

    4733

    浏览量

    68294
  • 编译器
    +关注

    关注

    1

    文章

    1617

    浏览量

    49026
  • this
    +关注

    关注

    0

    文章

    5

    浏览量

    3252
收藏 人收藏

    评论

    相关推荐

    C语言关键字const的几种用法

    本期来讲解一个C语言的关键字——const。
    发表于 06-21 11:05 1553次阅读
    C语言<b class='flag-5'>关键字</b>const的几种<b class='flag-5'>用法</b>

    嵌入式软件编程关键字用法和原理

    ,但是某些关键字,例如const、static、extern和volatile等,不同的场合具有不同的含义,而且某些用法晦涩难懂,为此本文详细介绍这些关键字
    发表于 06-20 07:37

    介绍一下关键字extern的用法

    学单片机C语言一定要熟悉关键字用法,本文介绍一下关键字extern的用法。1、extern的定义是:extern可以置于变量或者函数前,以标示变量或者函数的定义
    发表于 07-15 06:38

    关键字static的作用是什么

    头文件的ifndef/define/endif 的作用?1.关键字static的作用是什么1). 函数体,一个被声明为静态的变量在这一函数被调用过程维持其值不变。2).
    发表于 11-09 07:23

    嵌入式程序员常见的const、static、volatile关键字

    嵌入式程序员const、static、volatile三个关键字的朴素认识摘要:C语言程序编写,const、static关键字是比较熟悉的,volatile
    发表于 12-21 06:08

    IAR能否整个工程搜索关键字

    像mdk可以整个工程搜索关键字 IAR应该也有类似的功能吧,但是我貌似没有找到
    发表于 11-08 07:21

    final关键字用法

    Java,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本
    发表于 09-27 10:36 0次下载
    final<b class='flag-5'>关键字</b>的<b class='flag-5'>用法</b>

    javastatic关键字的作用

    static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢面试时问到的知识点之一。下面就先讲述一下static关键字
    发表于 09-27 17:12 0次下载

    java final关键字用法技巧汇总解析

    谈到final关键字,想必很多人都不陌生,使用匿名内部类的时候可能会经常用到final关键字。另外,Java的String类就是一个fi
    发表于 12-01 11:02 1111次阅读
    <b class='flag-5'>java</b> final<b class='flag-5'>关键字</b><b class='flag-5'>用法</b>技巧汇总解析

    java的final关键字所起的作用解析

    java编程语言中,有时候需要告知编译器一段数据是不变的编译期常量。对于这种情况,编译器可以将此常量值带入需要用到它的计算式子当中,这种在编译时执行计算式的方法减轻了运行时的开销。通常,这类常量数据都是基本类型的数据,并赋予关键字
    发表于 12-01 11:29 2829次阅读

    C++mutable关键字详解与实战

    mutable关键字详解与实战 C++mutable关键字是为了突破const关键字的限制,被mutable
    的头像 发表于 09-10 09:23 5521次阅读

    keilC51关键字code用法

    keil关键字code说明 用unsigned int 或signed char等定义的变量都存储单片机的RAM,程序可以随意更改这
    发表于 11-29 10:36 13次下载
    keil<b class='flag-5'>中</b>C51<b class='flag-5'>关键字</b>code<b class='flag-5'>用法</b>

    C语言中__attribute__ 关键字用法

    嵌入式开发,离不开 C 语言,C语言中有很多语法会直接或间接影响你代码的质量,下面就来讲讲__attribute__ 关键字用法。 1. 什么是 __attribute__ GNU C 编译器
    发表于 10-19 09:06 1.2w次阅读

    const关键字应用总结

    C++的const关键字用法非常灵活,而使用const将大大改善程序的健壮性
    的头像 发表于 05-26 09:06 540次阅读

    static关键字的三种用法

    变量(StaticVariables):C语言中,使用`static`关键字来声明静态变量是一种常见的用法,它具有以下主要作用:1.生存期延长:静态变量的生存期程序的整个运行期间,
    的头像 发表于 11-10 08:00 489次阅读
    static<b class='flag-5'>关键字</b>的三种<b class='flag-5'>用法</b>