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

作者:三天晒网且从不打鱼 时间:2023-11-09 22:45:19 

前言

今天给大家总结介绍一下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);
   }
}

输出结果:

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

static关键字用法:

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

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

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

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

来源:https://blog.csdn.net/qq_53130059/article/details/126714121

标签:Java,this,static,关键字
0
投稿

猜你喜欢

  • Android 文件操作详解及简单实例

    2021-10-29 06:23:01
  • MyEclipse设置Console输出到文件的实现方法

    2022-01-14 10:37:03
  • java设计模式之工厂方法模式

    2022-08-29 05:14:10
  • Android中的HOOK技术是什么

    2022-06-19 18:18:24
  • Android中WebView用法实例分析

    2023-03-20 17:02:51
  • JavaWeb利用struts实现文件下载时改变文件名称

    2023-10-24 11:26:53
  • java读取properties配置文件的方法

    2022-02-13 17:15:44
  • C++编程中用put输出单个字符和cin输入流的用法

    2023-05-28 06:14:49
  • SpringBoot整合RabbitMQ实现消息确认机制

    2023-09-11 04:07:22
  • 揭秘双十一手机淘宝图标如何被动态更换

    2022-06-05 20:14:04
  • Jar包冲突问题原理及解决方案

    2023-03-05 09:40:02
  • Android基于OpenCV实现图像修复

    2022-04-28 00:51:39
  • java内部类原理与用法详解

    2022-12-04 14:41:25
  • 简单谈谈Java中的栈和堆

    2022-07-30 05:33:01
  • C#中静态的深入理解

    2023-10-18 01:28:27
  • Java ArrayList类的基础使用讲解

    2021-11-14 10:22:18
  • 详解java 中泛型中的类型擦除和桥方法

    2021-07-10 23:55:08
  • Springboot+ElementUi实现评论、回复、点赞功能

    2022-06-16 04:34:00
  • SpringBoot根据目录结构自动配置Url前缀方式

    2023-01-31 14:04:29
  • mybatis foreach标签的使用详解

    2023-05-07 21:12:09
  • asp之家 软件编程 m.aspxhome.com