当前位置: 首页 > news >正文

Java面试八股之静态变量和实例变量的区别有哪些

  1. Java静态变量和实例变量的区别有哪些

存储位置和生命周期:

静态变量:静态变量属于类级别,存储在Java的方法区(或称为类区,随JVM实现而异,现代JVM中通常在元数据区内),并且在类首次被加载时创建,其生命周期与类相同,直到程序结束才被销毁。

实例变量:实例变量属于对象级别,存储在堆内存中,每个对象都有自己的一份实例变量副本。实例变量的生命周期与所属对象相同,当对象被创建时,实例变量被初始化,对象被垃圾回收时,实例变量随之消失。

访问方式:

静态变量:可以通过类名直接访问,不需要实例化对象,如 ClassName.staticVariable。

实例变量:必须通过实例化的对象来访问,如 object.instanceVariable。

共享性:

静态变量:在类的所有实例间共享,即所有对象访问的是同一份静态变量的拷贝。修改静态变量会影响所有实例。

实例变量:每个对象拥有独立的实例变量副本,互不影响。修改一个对象的实例变量不会影响其他对象的同名实例变量。

初始化时机:

静态变量:在类加载时初始化,且只会初始化一次。

实例变量:在创建对象时通过构造器或初始化块进行初始化,每创建一个对象就初始化一次。

使用场景:

静态变量:通常用于存储不依赖于对象状态的、类级别的信息,如配置信息、工具类方法等。

实例变量:存储与对象状态相关的数据,每个对象的这些数据可以不同。

调用限制:

在静态方法中,可以直接访问静态变量,但不能直接访问实例变量,除非通过对象实例来访问。实例方法中既可以访问静态变量也可以访问实例变量。

 如果大家需要视频版本的讲解,欢迎关注我的B站:

相关文章:

  • 绿洲生态【OAS】爱护环境--保护地球
  • 二叉树构建
  • 【CS.PL】Lua 编程之道: 控制结构 - 进度24%
  • 浏览器f12控制台怎么获取vue实例,并且修改data数据
  • C语言学习系列:笔记列表
  • 信号处理中的相位
  • ESP32s3与Lsm6ds3通信---i2c【开源】
  • 单目物体测距
  • Linux 性能优化基础
  • 2024050901-重学 Java 设计模式《实战访问者模式》
  • DB-Engines Ranking 2024年6月数据库排行
  • 大屏幕互动系统PHP源码 附动态背景图和配乐素材 含搭建教程
  • 【乐吾乐2D可视化组态编辑器】在线使用,快速入门
  • yolov8摔倒检测(包含数据集+训练好的模型)
  • 实现一个vue js小算法 选择不同的时间段 不交叉
  • iOS编译提示和导航提示
  • JAVA SE 6 GC调优笔记
  • Js基础知识(四) - js运行原理与机制
  • k个最大的数及变种小结
  • leetcode46 Permutation 排列组合
  • node和express搭建代理服务器(源码)
  • oschina
  • Python_OOP
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Yeoman_Bower_Grunt
  • 给第三方使用接口的 URL 签名实现
  • 排序算法之--选择排序
  • 前端存储 - localStorage
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 原生 js 实现移动端 Touch 滑动反弹
  • 在Docker Swarm上部署Apache Storm:第1部分
  • ​插件化DPI在商用WIFI中的价值
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • #07【面试问题整理】嵌入式软件工程师
  • #NOIP 2014#Day.2 T3 解方程
  • (C语言)fgets与fputs函数详解
  • (done) 声音信号处理基础知识(2) (重点知识:pitch)(Sound Waveforms)
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)hibernate配置管理
  • (二)windows配置JDK环境
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (一) storm的集群安装与配置
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)ABI是什么
  • .net 托管代码与非托管代码
  • .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF!(完整版)
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .NET中的Exception处理(C#)
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题