Java类中this关键字与static关键字的用法解析

 更新时间:2022年09月07日 10:08:54   作者:三天晒网且从不打鱼  
这篇文章主要介绍了Java类中this关键字与static关键字的用法解析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

前言

今天给大家总结介绍一下Java类中this关键字和static关键字的用法。

this关键字用法:

  • this.属性可以调用类中的成员变量
  • this()可以调用类中的构造方法

1:修饰属性,表示调用类中的成员变量。

代码示例:

public class Student {

    public String name;
    public int age;
    public String school;

    public Student(String name, int age, String school) {
        this.name = name;
        this.age = age;
        this.school = school;
    }
}

因为程序的就近匹配原则,编译器会从调用代码处的最近位置查找有无匹配的变量或者方法,若找到直接使用最近的变量或方法。所以如果上述代码中的带参构造方法不使用this的话我们在使用该构造方法时会遇到无法赋值的问题。

2:this修饰方法

this可用于构造函数之间的相互调用,可以减少构造函数代码的耦合性,使代码看起来更加整洁(不写重复代码很重要)。

未使用this前:

public class Student {

    public String name;
    public int age;
    public String school;

    public Student() {
    }

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

    public Student(String name, int age, String school) {
        this.name = name;
        this.age = age;
        this.school = school;
    }

}

使用this后:

public class Student {

    public String name;
    public int age;
    public String school;

    public Student() {
    }

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

    public Student(String name, int age, String school) {
        this(name,age);
        this.school = school;
    }

}

PS:

  • 1.this调用构造方法必须放在当前构造方法的首行调用,否则会报错。
  • 2.对构造方法的调用不能成"环”必须线性调用,否则会陷入调用死循环。

3:this表示当前对象的引用

当前是通过哪个对象调用的属性或者方法,this就指代哪一个对象。

代码示例:

public class Student {

    public String name;
    public int age;
    public String school;

    public void show(){
        System.out.println(this);
    }

    public static void main(String[] args) {
        Student stu1 = new Student();
        stu1.show();
        System.out.println(stu1);
        System.out.println("————————————");
        Student stu2 = new Student();
        stu2.show();
        System.out.println(stu2);
        System.out.println("————————————");
        Student stu3 = new Student();
        stu3.show();
        System.out.println(stu3);
    }
}

输出结果:

static关键字用法:

在Java的类中,若static修饰类中属性,称之为类的静态属性/类属性,它和具体的对象无关,该属性存储在JVM的方法区(不同于堆区和栈区的另一个区域),类中的所有对象共享同一个方法区(类中的常量和静态变量储存在方法区中),直接使用类名称来访问静态变量,不推荐使用某个对象来访问。

只要类一定义,JVM就会为static修饰的类属性分配空间,它和类是绑定的,使用static修饰变量的好处是当我们需要修改一个值时可以更加方便,比如学生类中的学校属性,若学校改名字了,我们没有使用static修饰,那么我们就要给每个学生丢修改一次,但是使用了static则只需要修改一次。

相关问题:Java方法中是否可以定义静态变量?

解答:静态变量,当类定义时和类一块加载到内存中了,而调用方法至少是在类定义之后才能调用的,先后顺序不一样,就是说还没调用方法便已经执行了方法里面的定义变量,这是不合理的。

到此这篇关于Java类中this关键字与static关键字的用法解析的文章就介绍到这了,更多相关Java类this关键字与static关键字内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot在Controller层接收参数的n种姿势(超详细)

    SpringBoot在Controller层接收参数的n种姿势(超详细)

    这篇文章主要介绍了SpringBoot在Controller层接收参数的常用方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • Java中super和this的用法详解

    Java中super和this的用法详解

    这篇文章主要介绍了Java中super和this的用法详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • JAVA日常开发中一些常见问题归纳讲解

    JAVA日常开发中一些常见问题归纳讲解

    这篇文章主要给大家介绍了JAVA日常开发中一些常见问题的相关资料,包括语法错误、数据类型问题、面向对象编程问题、集合类问题以及文件操作问题,通过详细的分析和示例,帮助程序员提高代码的健壮性和可维护性,需要的朋友可以参考下
    2024-12-12
  • Reactor中的onErrorContinue 和 onErrorResume

    Reactor中的onErrorContinue 和 onErrorResume

    这篇文章主要介绍了Reactor中的onErrorContinue 和 onErrorResume,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-09-09
  • Java8新特性详解与实战分享

    Java8新特性详解与实战分享

    Java 8作为Java语言的一个重要更新,引入了一系列新特性,这些特性不仅提高了代码的可读性和可维护性,还增强了程序的性能,本文将详细介绍Java 8中的几个关键使用技巧,并通过代码案例来展示它们的应用,需要的朋友可以参考下
    2024-06-06
  • Java连接Linux服务器过程分析(附代码)

    Java连接Linux服务器过程分析(附代码)

    这篇文章主要介绍了Java连接Linux服务器过程分析(附代码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Mybatis-plus sql注入及防止sql注入详解

    Mybatis-plus sql注入及防止sql注入详解

    mybatis-plus提供了许多默认单表 CRUD 语句,对于其他SQL情况爱莫能助,下面这篇文章主要给大家介绍了关于Mybatis-plus sql注入及防止sql注入的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • 如何对Mysql数据表查询出来的结果进行排序

    如何对Mysql数据表查询出来的结果进行排序

    这篇文章主要介绍了如何对Mysql数据表查询出来的结果进行排序问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • java文件上传下载功能实现代码

    java文件上传下载功能实现代码

    这篇文章主要为大家详细介绍了java文件上传下载功能实现代码,具有一定的参考价值,感兴趣的朋友可以参考一下
    2016-06-06
  • 使用JavaWeb webSocket实现简易的点对点聊天功能实例代码

    使用JavaWeb webSocket实现简易的点对点聊天功能实例代码

    这篇文章主要介绍了使用JavaWeb webSocket实现简易的点对点聊天功能实例代码的相关资料,内容介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-05-05

最新评论