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);
}
}
输出结果:
static关键字用法:
在Java的类中,若static修饰类中属性,称之为类的静态属性/类属性,它和具体的对象无关,该属性存储在JVM的方法区(不同于堆区和栈区的另一个区域),类中的所有对象共享同一个方法区(类中的常量和静态变量储存在方法区中),直接使用类名称来访问静态变量,不推荐使用某个对象来访问。
只要类一定义,JVM就会为static修饰的类属性分配空间,它和类是绑定的,使用static修饰变量的好处是当我们需要修改一个值时可以更加方便,比如学生类中的学校属性,若学校改名字了,我们没有使用static修饰,那么我们就要给每个学生丢修改一次,但是使用了static则只需要修改一次。
相关问题:Java方法中是否可以定义静态变量?
解答:静态变量,当类定义时和类一块加载到内存中了,而调用方法至少是在类定义之后才能调用的,先后顺序不一样,就是说还没调用方法便已经执行了方法里面的定义变量,这是不合理的。
来源:https://blog.csdn.net/qq_53130059/article/details/126714121
猜你喜欢
- 工具方法:本文的目的是把json串转成map键值对存储,而且只存储叶节点的数据maven 引用jar包版本:<dependency&g
- 基本介绍数据回显:模型数据导向视图(模型数据 ---> Controller ---> 视图)说明:SpringMVC在调用方法
- Sequence序列Sequence 是Kotlin标准库提供的一种容器类型。它和Iterable一样具备对集合进行多步骤操作能力,但是却是
- 前言本文主要给大家介绍了关于Java读取二进制文件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。读Hex写CS
- 使用JAVA工程管理越来越多的jar包,担心导错了,多导了,漏导了怎么办?换一个IDE项目后项目会不会出一堆BUG,看的头皮发麻?自己写的代
- 本文实例汇总了Java的System.getProperty()方法获取信息的用法。分享给大家供大家参考。具体如下:System.out.p
- 背景最近好几个项目在运行过程中客户都提出文件上传大小的限制能否设置的大一些,用户经常需要上传好几个G的资料文件,如图纸,视频等,并且需要在上
- 前言最近看插件库上少有的取色器大都是圆形的或者奇奇怪的的亚子,所以今天做两个矩形的颜色取色器提示:以下是本篇文章正文内容,下面案例可供参考一
- 什么是队列结构一种线性结构,具有特殊的运算法则【只能在一端(队头)删除,在另一端(队尾)插入】。分类:顺序队列结构链式队列结构基本操作:入队
- 本文实例为大家分享了Android登录注册功能的具体代码,供大家参考,具体内容如下展示效果代码区MainActivity(登录方法)publ
- 1、什么是servlet异步请求Servlet 3.0 之前,一个普通 Servlet 的主要工作流程大致如下:(1)、Servlet 接收
- 1 依赖配置<parent> <groupId>org.springframework.b
- 这是Hadoop学习全程记录第1篇,在这篇里我将介绍一下如何在Linux下安装Hadoop1.x。先说明一下我的开发环境:虚拟机:VMwar
- pom.xml配置<dependency> <groupId>org.springframework.
- 这篇文章主要介绍了Java import导入及访问控制权限修饰符过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- 1.SQL注入:程序向后台数据库传递SQL时,用户提交的数据直接拼接到SQL语句中并执行,从而导入SQL注入攻击。字符型注入:黑色部分为拼接
- 项目介绍springboot搭建的访客管理系统,针对高端基地做严格把控来访人员信息管理,用户后端可以设置多个管理员帐号,给予不同部门的管理层
- 1.最近的项目中,有一个Activity用到Fragment+ViewPager,其中一个fragment中实现了视频播放的功能,包含有Su
- 在使用Gateway 调用一个文件上传服务时 前端传来的File的base64字符串怎么都接受不到 但是用Body方式请求就能接收到后来经过
- 在logback.xml中加上该配置,包名如:com.xxx<logger name="packageName"