JAVA基础-02实例变量和类变量区别

news2025/1/11 3:00:30

0x00 类变量

类变量(Class Variables),也称为静态变量(Static Variables),是在类级别声明的变量,与类的所有实例共享相同的值。与实例变量不同,类变量不属于对象的特定实例,而是属于整个类。类变量在类加载时被初始化,并且在类的所有实例之间共享相同的值。

类变量通常用于存储与整个类相关的数据,如常量、共享配置、计数器等。它们可以在类的任何方法中访问,并且无需创建类的实例即可访问。

0x01 实例变量

实例变量(Instance Variables)是在类的实例(对象)中定义的变量,每个类的实例都有一份独立的实例变量副本。它们用于存储对象的特定状态和数据,不同的对象可以有不同的实例变量值。实例变量通常在类的成员变量部分声明,而不是在方法内部。

0x02 类变量和实例变量的区别

2.1 作用范围:

实例变量:每个类的实例(对象)都有一份独立的实例变量副本,它们的值在每个对象之间可以不同。
类变量:类变量在整个类中只有一个副本,所有对象共享相同的类变量值。

2.2 初始化:

实例变量:实例变量通常在对象创建时通过构造方法初始化。每个对象可以具有不同的初始值。
类变量:类变量在类加载时被初始化,通常在类定义中赋初值。

2.3 访问方式:

实例变量:实例变量通过对象访问,即 对象名.实例变量名。
类变量:类变量可以通过类名直接访问,即 类名.类变量名。

2.4 作用域:

实例变量:实例变量的作用域限制在声明它们的类的实例中,每个对象都有自己的实例变量。
类变量:类变量的作用域在整个类内部,所有对象共享相同的类变量。

2.5 生命周期:

实例变量:实例变量的生命周期与对象的生命周期相同。当对象被垃圾回收时,实例变量也会被销毁。
类变量:类变量的生命周期在整个程序运行期间,只有在类被卸载时才会被销毁。

2.6 用途:

实例变量:用于存储每个对象的状态和数据,适合表示对象的属性。
类变量:用于存储与整个类相关的信息,例如共享的配置、常量等。

0x03 代码分析

让我们通过一个示例来更详细地说明实例变量和类变量之间的区别:

假设我们有一个名为 Person 的类,用于表示人员信息。我们可以在这个类中使用实例变量和类变量来表示人员的不同属性。

public class Person {
    // 实例变量
    String name;    // 姓名
    int age;        // 年龄

    // 类变量
    static int totalCount = 0;  // 总人数

    // 构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
        totalCount++;  // 每次创建对象,类变量增加
    }

    // 实例方法,显示人员信息
    public void displayInfo() {
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
    }

    // 类方法,显示总人数
    public static void displayTotalCount() {
        System.out.println("Total people: " + totalCount);
    }

    public static void main(String[] args) {
        Person person1 = new Person("Alice", 25);
        Person person2 = new Person("Bob", 30);

        person1.displayInfo();
        person2.displayInfo();

        Person.displayTotalCount();  // 访问类方法以显示总人数
    }
}

代码输出
在这里插入图片描述

在这个示例中,Person 类有一个实例变量 name 和一个实例变量 age,用于表示每个人的姓名和年龄。类还有一个类变量 totalCount,用于跟踪创建的总人数。

main 方法中,我们创建了两个 Person 对象,并分别调用了实例方法 displayInfo() 来显示每个人的信息。同时,我们还调用了类方法 displayTotalCount() 来显示总人数。

需要注意以下几点:

每个对象都有自己的 nameage 实例变量,它们在不同对象之间可以不同。
totalCount 类变量在所有对象之间是共享的,每次创建对象都会增加。
实例方法和类方法都可以访问实例变量和类变量,但类方法中只能访问静态(类)变量。
这个例子突显了实例变量和类变量的不同特性和用途。实例变量用于存储对象的属性,而类变量用于存储与整个类相关的信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/916071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

韦东山lcd驱动

RGB 接口的 TFT-LCD 驱动 芯片集成了显存(ddr、SDRM)和控制器 一个像素点的颜色使用 24位表示,这样的话硬件对应数据引脚有24个 LCD硬件模型 RGB 传输数据 HSYNC 行同步 VSYNC 帧同步 DE 使能有效 declock 移动一个像素(频率…

简述docker的网络模式

Docker 提供了多种网络模式,用于控制容器之间以及容器与主机之间的网络通信。以下是 Docker 的一些常见网络模式 briage模式: docker容器启动时默认就是该模式,在该模式下,docker容器会连接到一个名为docker0的虚拟以太网桥上,通…

【pytorch】Unfold和Fold的互逆操作

1. 参数定义 Unfold https://pytorch.org/docs/stable/generated/torch.nn.Unfold.html#torch.nn.Unfold Fold https://pytorch.org/docs/stable/generated/torch.nn.Fold.html#torch.nn.Fold 注意:参数当中的padding是在四周边补零,而当fold后的尺寸…

AMBA总线协议(8)——AHB(六):分割传输

一、前言 在之前的文章中,我们重点介绍了AHB传输的仲裁,首先介绍了仲裁相关的信号,然后分别介绍了请求总线访问,授权总线访问,猝发提前终止,锁定传输和默认主机总线,在本文中我们将继续介绍AHB的…

生信豆芽菜-单样本GSEA分析

网址:http://www.sxdyc.com/gradeSsgsea 1、数据准备 第一个文件:表达谱数据 第二个文件:功能基因集 2、提交后,等待运行成功即可下载 当然,如果不清楚数据是什么样的,可以选择下载我们的示例数据&a…

【报错解决】:DataGrip连接Mysql报08S01解决方法

DataGrip连接Mysql报08S01解决方案 报错 [08S01]Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. No appropriate protocol (protocol is disabled or ciph…

Ubuntu Touch OTA-2 推出,支持 Fairphone 3 和 F(x)tec Pro1 X

导读UBports 基金会近日宣布为基于 Ubuntu 20.04 LTS (Focal Fossa) 的 Ubuntu Touch 移动操作系统发布并全面提供 OTA-2 软件更新。 Ubuntu Touch OTA-2 在首次 OTA 更新整整四个月后发布,支持新设备,包括 Fairphone 3、F(x)tec Pro1 X 和 Vollaphone X…

跌倒检测,基于YOLOV8S,只依赖OPENCV,支持C++/PYTHON

跌倒检测,只依赖OPENCV,支持C/PYTHON YOLOV8S检测原理,很多CSDN博客已经介绍了,只需要标记数据,然后训练,转换成ONNX模型,然后OPENCV的DNN模块调用,支持C/PYTHON

MySQL数据库面试题汇总

MySQL数据库 1.什么是数据库? 数据库(Database)是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。(简而言之,用来存储大量数据的&…

Java【手撕双指针】LeetCode 11. “盛水最多的容器“, 图文详解思路分析 + 代码

文章目录 前言一、盛水最多的容器1, 题目2, 思路分析3, 代码展示 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 📗 Java数据结构: 顺序表…

冠达管理:大盘金针探底 数据要素板块掀涨停潮

快速回调后,大盘走出金针探底走势。 沪指周二高开震动,午后指数刷新本轮回调新低后抄底资金加快流入,推动指数快速翻红,并重回3100点整数关口上方,但未能进一步向5日均线挨近。深成指同样是高开震动午后探底上升&#…

网约车接单神器:智能化技术与出行服务的完美结合

随着移动互联网的迅猛发展,网约车行业成为现代出行方式的主流之一。为了提高用户体验和服务效率,网约车接单神器应运而生。本文将探讨网约车接单神器的专业性、思考深度和逻辑性,以及其与智能化技术和出行服务的完美结合。 一、引言&…

Jobs Portal求职招聘系统源码v3.5版本

Jobs Portal求职招聘系统 是为求职者和公司发布职位而开发的交互式求职招聘源码。它使求职者能够发布简历、搜索工作、查看个人工作列表。 它将提供各种公司在网站上放置他们的职位空缺资料,并且还可以选择搜索候选人简历。 除此之外,还有一个管理模块供…

成功解决SQL 错误 [22000]: 第3 行附近出现错误: 试图修改自增列[ID](达梦数据库)

当我们使用工具来手动修改自增列的自增ID时,可能会报如下异常 SQL 错误 [22000]: 第3 行附近出现错误:试图修改自增列[ID] 解决办法: 可以使用SQL语句来修改 ALTER TABLE "fdw"."SYSTEM_DICT_TYPE" DROP IDENTITY; UPDATE "f…

问道管理:多少钱可以申购新股?

随着中国股市的不断发展,越来越多的人开端进入投资领域。而申购新股是投资中的一种常见方法。那么,多少钱能够申购新股呢?这个问题并不简略,需求从多个视点来剖析。 首先,需求了解什么是申购新股。申购新股&#xff0c…

IGBT基本工作原理及IGBT的作用是什么?

IGBT 今天我们一起来了解关于IGBT(绝缘栅双极性晶体管)芯片。在过去的几十年中,我们生活的每个角落都离不开能源的驱动。然而,传统的功率晶体管却受限于一些方面不足。幸运的是,IGBT芯片的出现彻底改变了这一局面。 …

管理系统用户登录功能

一、前言 任何一个管理信息系统都会有登录功能。我们简单可以通过用户名加密码加验证码进行登录。但是就是一个这样的简单功能却涉及的要求很多。 比如对账号的要求,对密码复杂度的要求,对登录时长的要求,对密码有效期的要求,对登…

前端开发中移动端开发需要注意什么? - 易智编译EaseEditing

在前端开发中,移动端开发具有一些独特的挑战和注意事项。以下是移动端开发时需要注意的一些重要点: 响应式设计: 移动设备的屏幕尺寸和分辨率多样,因此要采用响应式设计,确保你的网站或应用在各种设备上都能良好地呈…

Star History 月度开源精选|Llama 2 及周边生态特辑

7 月 18 日,Meta 发布了 Llama,大语言模型 Llama 1 的进阶版,可以自由免费用于研究和商业,支持私有化部署。 所以本期 Star History 的主题是:帮助你快速把 Llama 2 在自己机器上跑起来的开源工具,无论你的…

生信学院|08月25日《SOLIDWORKS PDM帮助企业对设计数据版本的管理应用》

课程主题:SOLIDWORKS PDM帮助企业对设计数据版本的管理应用 课程时间:2023年08月25日 14:00-14:30 主讲人:车立洋 生信科技 PDM专家 1、图纸&文档的版本管理对于企业的重要性 2、SolidWorks PDM对图纸&文档版本的管理 3、SolidW…