Java关键字之this用法详解

Java关键字之this用法详解

1. 简介

this 是 Java 语言中的一个关键字,表示当前对象,一般情况下指代的是当前实例。在 Java 中大量使用 this 引用。 this 可以用来调用一个类的构造函数,也可以用来调用类成员变量或成员方法。

2. this 用法

2.1. 用于调用类的构造函数

在 Java 中, this 可以用于引用一个类的构造函数。这种用法的主要目的是在构造函数中调用另一个构造函数。

例如,我们定义一个 Student 类,有两个构造函数,一个包含一个参数,另一个包含两个参数。当在实例化这个类的时候,如果传入了两个参数,则调用两个参数的构造函数,否则调用一个参数的构造函数。

public class Student {
    private String name;

    public Student() {
        this("default");
    }

    public Student(String name) {
        this.name = name;
    }
}

在上面的例子中,我们为 Student 类定义了两个构造函数,一个不带参数,另一个带有一个参数。当在实例化 Student 类时不传入参数,则会调用不带参数的构造函数,该构造函数中又会调用带有一个参数的构造函数来完成初始化操作。

2.2. 用于避免命名冲突

Java 中,如果在方法或构造函数中存在类成员变量和局部变量同名的情况下,使用 this 可以区分成员变量和局部变量。

例如,我们定义一个 Person 类,类中有一个成员变量 name,同时在类的构造函数中又定义了一个局部变量 name

public class Person {
    private String name;

    public Person(String name) {
        this.name = name; //成员变量
        String name = "Tom"; //局部变量
        System.out.println("局部变量 name 值为:" + name);
        System.out.println("成员变量 name 值为:" + this.name);
    }
}

在上面的例子中,通过 this.name 可以访问类的成员变量 name,通过 name 可以访问局部变量 name。在这里,通过 this 关键字区分了成员变量和局部变量的名字冲突。

3. 示例

3.1 示例一

我们定义一个 Person 类,并且在其中定义了两个方法,分别为 setNameshowName

public class Person {
    private String name;

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

    public void showName() {
        System.out.println("我的名字是:" + this.name);
    }
}

在上面的例子中,我们在 setName 方法中使用了 this 关键字来访问类的成员变量 name,并且在 showName 方法中也使用了 this 关键字访问类的成员变量 name,从而避免了命名冲突的问题。

public static void main(String[] args) {
    Person p = new Person();
    p.setName("小明");
    p.showName(); //我的名字是:小明
}

当调用 showName 方法时,会输出 我的名字是:小明

3.2 示例二

我们再来定义一个 Family 类,并且在其中调用了 Person 类的构造函数,同时使用了 this 关键字来代表当前实例。

public class Family {
    private Person father;
    private Person mother;

    public Family() {
        this.father = new Person("父亲");
        this.mother = new Person("母亲");
    }

    public void showFamily() {
        System.out.println("我们的家庭成员有:");
        this.father.showName();
        this.mother.showName();
    }
}

在上面的例子中,我们在 Family 类的构造函数中实例化了 fathermother 两个实例,并且在 showFamily 方法中使用了 this 关键字来访问 fathermother 实例。

public static void main(String[] args) {
    Family f = new Family();
    f.showFamily(); 
    //我们的家庭成员有:
    //我的名字是:父亲
    //我的名字是:母亲
}

当调用 showFamily 方法时,会输出 我们的家庭成员有:我的名字是:父亲 我的名字是:母亲

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java关键字之this用法详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • JavaScript 拖拽实现(附注释),最经典简单短小精悍!

    以下是JavaScript拖拽实现的详细攻略: 概述 拖拽实现是网页中常见的交互效果,它的实现原理是借助JavaScript事件和DOM操作。本文将带您全面了解JavaScript拖拽的实现方法。 基本原理 拖拽实现的基本原理如下: 给需要拖拽的元素绑定mousedown事件。 鼠标按下时,记录鼠标相对元素位置,并给document绑定mousemove和m…

    JavaScript 2023年6月11日
    00
  • JS将unicode码转中文方法

    将 Unicode 码转换为对应中文字符的方法,通常使用 JavaScript 中的 String.fromCharCode() 方法。该方法能够将 Unicode 码值转换为对应字符,需要传入 Unicode 码值(数值形式)作为参数,返回对应的字符。 下面是将 Unicode 码转换为对应中文字符的示例: 示例 1: const unicodeStr =…

    JavaScript 2023年5月19日
    00
  • js判断浏览器是否支持严格模式的方法

    判断浏览器是否支持严格模式,我们可以通过以下两种方法来实现。 方法一 我们可以使用try…catch语句,在try语句中编写一个无法在严格模式下执行的代码,然后在catch语句中捕获错误,如果没有捕获到错误就代表浏览器支持严格模式。 示例代码: var isStrictMode; try { eval("’use strict’; var x …

    JavaScript 2023年6月10日
    00
  • 从vue-router看前端路由的两种实现

    从vue-router看前端路由的两种实现 前端路由是现代前端开发中非常重要的一部分,它实现了单页应用(SPA)的核心功能,目前主流的前端框架如Angular、React、Vue等都实现了自己的路由组件。其中,Vue框架中自带的路由组件vue-router是应用广泛的一种。在vue-router的实现中,涉及到两种不同的前端路由实现方式。下面我们分别来讲解一…

    JavaScript 2023年6月11日
    00
  • 详解JavaScript中jQuery和Ajax以及JSONP的联合使用

    详解JavaScript中jQuery和Ajax以及JSONP的联合使用 概述 在现代前端开发中,通过AJAX技术可以实现无需整页刷新的异步加载数据,从而提升用户体验。而jQuery作为目前最流行的JavaScript库,为我们提供了非常便捷的Ajax操作API。除此之外,由于浏览器的同源策略,我们需要借助JSONP跨域获取到其他域名下的数据,在此过程中jQ…

    JavaScript 2023年6月11日
    00
  • Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例

    标题:Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例 本文介绍Python cookbook中关于针对任意多的分隔符拆分字符串的操作示例,涉及到字符串的分割、切片、正则表达式等多种方法。 示例一:使用字符串的split方法进行分割操作 在Python中,可以使用字符串的split方法对字符串进行分隔,拆分为指定分隔符的多个…

    JavaScript 2023年6月10日
    00
  • javascript实现获取cookie过期时间的变通方法

    获取cookie的过期时间是一个在JavaScript编程中常见的需求。通常来说,我们可以通过document.cookie来得到当前页面的所有cookie以及它们的值。但是,要获取cookie的过期时间却并不简单,因为HTTP cookie规范并没有定义任何获取cookie过期时间的API。不过,可以通过以下变通方法来解决这个问题。 方案一:设置cooki…

    JavaScript 2023年6月11日
    00
  • js显示当前日期时间和星期几

    JS显示当前日期、时间和星期几的完整攻略如下: 1. 获取当前日期时间: JavaScript中,通过Date对象可以获取当前系统时间,我们可以使用new Date()来获取一个Date实例,然后通过对实例的操作来获取日期时间信息。下面是获取当前日期时间的代码: let now = new Date(); let year = now.getFullYear…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部