Java this关键词详解

简介: Java this关键词详解

一.为什么要引用this?

 举个例子:

class Date{
    public int year;
    public int mouth;
    public int day;
    public void setDay(int year,int mouth,int day){
        year = year;
        mouth = mouth;
        day = day;
    }
    public void printfDate(){
        System.out.println(year + "年" + mouth + "月" + day + "日");
    }
}
public class Test2 {
    public static void main(String[] args) {
        Date date = new Date();
        date.setDay(2023,3,29);
        date.printfDate();
    }
}

 如果这段代码是对的,那么它的运行结果是不是是:

2023年3月29日

 那么事事实上呢,它的运行结果是:

0年0月0日

为什么会造成这种情况呢?细心的同学会发现,形参名与成员变量名相同

 public void setDay(int year,int mouth,int day){
        year = year;
        mouth = mouth;
        day = day;
    }

那函数体中到底是谁给谁赋值?成员变量给成员变量?参数给参数?参数给成员变量?成员变量参数?估计自己都搞不清楚了,所以我们引入了关键词this。


二、this.属性名的作用

 我们将代码稍作修改:

public void setDay(int year,int mouth,int day){
        this.year = year;
        this.mouth = mouth;
        this.day = day;
        //分别都加上this
    }

 我们再一次运行代码,这一次结果将是正确的:

2023年3月29日

   作用: 当一个类的属性(成员变量)名与访问该属性的方法参数名相同时,则需要使用 this 关键字来访问类中的属性,以区分类的属性和方法中的参数。


三、this.方法名的作用

 我们再将上述代码该成如下代码:

class Date{
    public int year;
    public int mouth;
    public int day;
    public void setDay(int year,int mouth,int day){
        this.year = year;
        this.mouth = mouth;
        this.day = day;
    }
    public void printfDate(){
        this.school();
        System.out.println(year + "年" + mouth + "月" + day + "日");
    }
    public void school(){
        System.out.println("开学了");
    }
}
public class Test2 {
    public static void main(String[] args) {
        Date date = new Date();
        date.setDay(2023,3,29);
        date.printfDate();
    }
}

 再Date类中又创建了一个school成员方法,那么我们可以直接在其它成员方法中调用这个成员方法。

注意:

  • 大部分的时候,一个方法访问该类中定义的其他方法、成员变量时加不加 this 前缀的效果是完全一样的,因为编译器会帮助我们生成一个隐形的this。
  • 对于 static 修饰的方法而言,可以使用类来直接调用该方法,如果在 static 修饰的方法中使用 this 关键字,则这个关键字就无法指向合适的对象,所以,static 修饰的方法中不能使用 this 引用。并且 Java 语法规定,静态成员不能直接访问非静态成员。
  • this只能在成员方法中使用。


三、this()访问构造方法

this( ) 用来访问本类的构造方法,括号中可以有参数,如果有参数就是调用指定的有参构造方法。

class Student {
    String name;
    // 无参构造方法(没有参数的构造方法)
    public Student() {
        this("豆豆");
    }
    // 有参构造方法
    public Student(String name) {
        this.name = name;
    }
    public void print() {
        System.out.println("姓名:" + name);
    }
}
public class Test3 {
    public static void main(String[] args) {
        Student student = new Student();
        student.print();
    }
}

输出结果:

姓名:豆豆

 注意:

  • this( ) 不能在普通方法中使用,只能写在构造方法中。
  • 在构造方法中使用时,必须是第一条语句。


总结

本篇为大家介绍关键词this,感谢垂读,下篇文章见!

目录
相关文章
|
11月前
|
Java
【零基础学Java】—this关键字的三种用法+Java继承的三个特点(二十一)
【零基础学Java】—this关键字的三种用法+Java继承的三个特点(二十一)
|
6月前
|
Java
Java中的this关键字
Java中的this关键字
51 1
|
6月前
|
Java 程序员
Java this关键字详解(3种用法),Java程序员面试必备的知识点
Java this关键字详解(3种用法),Java程序员面试必备的知识点
|
6月前
|
Java
Java的this关键字的使用
Java的this关键字的使用
|
5月前
|
Java 数据安全/隐私保护
Java基础手册二(类和对象 对象创建和使用 面向对象封装性 构造方法与参数传递 this关键字 static关键字 继承 多态 方法覆盖 final关键字 访问控制权限修饰符)
Java基础手册二(类和对象 对象创建和使用 面向对象封装性 构造方法与参数传递 this关键字 static关键字 继承 多态 方法覆盖 final关键字 访问控制权限修饰符)
34 0
|
5月前
|
负载均衡 Java 应用服务中间件
Java开发常见关键词集绵
Java开发常见关键词集绵
24 0
|
6月前
|
Java API
深入理解Java中的this关键字
深入理解Java中的this关键字
82 0
|
6月前
|
Java
Java面向对象编程:就近原则与this关键字详解
Java面向对象编程:就近原则与this关键字详解
61 0
|
6月前
|
Java
蓝易云 - java封装、this关键字详解
以上就是Java中封装和this关键字的基本概念和用法。理解和掌握这些概念对于编写高质量的Java代码至关重要。
179 0
|
6月前
|
Java
【JAVA学习之路 | 基础篇】this关键字
【JAVA学习之路 | 基础篇】this关键字