Java中 类变量(static静态变量)和实例变量(非静态变量)的区别

简介: Java中 类变量(static静态变量)和实例变量(非静态变量)的区别

一、两种变量的来源

    成员变量其实包括类变量(static静态变量)和实例变量(非静态变量)

二、类变量(static静态变量)

1.类变量(static静态变量)的定义格式

       static关键字修饰
              
         如:  static int a; 

           注意:static表示不要实例化就可以使用


2.类变量(static静态变量)的特点

                 1.随着类的加载而加载
                 
                 2.优先于对象存在
                 
                 3.被所有对象所共享  (其中一个对象将它值改变,其他对象得到的也是改变后的结果)(在项目中应用比较多,同步修改)

                 4.可以直接被类名调用

三、实例变量(非静态变量,无static修饰)

1.实例变量(非静态变量,无static修饰)的定义格式

         无 static关键字修饰
              
              如: int a;     

四、类变量(静态变量)和实例变量(非静态变量)的区别

区别:
      1.定义不同
      
          类变量(静态变量)定义时候前面要加上static
          
          实例变量(非静态变量)不需要加
          
      2.初始化不同
      
          类变量(静态变量)随着类的加载而初始化
          
          实例变量(非静态变量) 是new对象后才进行初始化

      3.内存位置不同
      
          类变量(静态变量)随着类的加载而存在于“方法区”中
          
          实例变量(非静态变量)存储在“堆内存区”
          
      4.调用方式不同
      
          类变量(静态变量)通过类名调用
          
          实例变量(非静态变量)通过对象调用
          
      5.生命周期不同
      
         类变量(静态变量)随着类的加载而加载,虚拟机停止运行类时,静态变量周期结束(类变量生命周期最长,随着类的消失而消失)
         
         实例变量(非静态变量)随着对象的产生而产生,随着对象的消失而失去引用,等待垃圾回收(随着对象的消失而消失)

作者:KJ.JK

本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习

目录
相关文章
|
2月前
|
存储 缓存 安全
除了变量,final还能修饰哪些Java元素
在Java中,final关键字不仅可以修饰变量,还可以用于修饰类、方法和参数。修饰类时,该类不能被继承;修饰方法时,方法不能被重写;修饰参数时,参数在方法体内不能被修改。
39 2
|
1天前
|
Java Linux iOS开发
如何配置 Java 环境变量:设置 JAVA_HOME 和 PATH
本文详细介绍如何在Windows和Linux/macOS系统上配置Java环境变量。
40 12
|
1天前
|
存储 安全 Java
探索 Java 静态变量(static)的奥秘
本文深入探讨了Java中的静态变量(`static`),从初印象、使用场景、访问方式、初始化、线程安全、优缺点到最佳实践,全面解析其特性和应用场景。静态变量属于类而非实例,适用于共享数据、定义全局常量和工具类中的变量。它在类加载时初始化,生命周期贯穿整个程序运行。然而,多线程环境下需注意线程安全问题,可通过`synchronized`或原子类解决。优点包括共享数据方便和提高性能,但也存在线程安全和代码耦合度增高的缺点。最佳实践建议谨慎使用、保证线程安全、遵循命名规范并封装访问。掌握静态变量的正确用法,能让你的代码更加高效简洁。
23 11
|
2月前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
95 14
|
1月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
30 1
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
76 8
|
2月前
|
设计模式 JavaScript 前端开发
java中的static关键字
欢迎来到瑞雨溪的博客,博主是一名热爱JavaScript和Vue的大一学生,致力于全栈开发。如果你从我的文章中受益,欢迎关注我,将持续分享更多优质内容。你的支持是我前进的动力!🎉🎉🎉
62 8
|
2月前
|
Java 程序员 容器
Java中的变量和常量:数据的‘小盒子’和‘铁盒子’有啥不一样?
在Java中,变量是一个可以随时改变的数据容器,类似于一个可以反复打开的小盒子。定义变量时需指定数据类型和名称。例如:`int age = 25;` 表示定义一个整数类型的变量 `age`,初始值为25。 常量则是不可改变的数据容器,类似于一个锁死的铁盒子,定义时使用 `final` 关键字。例如:`final int MAX_SPEED = 120;` 表示定义一个名为 `MAX_SPEED` 的常量,值为120,且不能修改。 变量和常量的主要区别在于变量的数据可以随时修改,而常量的数据一旦确定就不能改变。常量主要用于防止意外修改、提高代码可读性和便于维护。
|
存储 Java 关系型数据库
20 个实例玩转 Java 8 Stream
20 个实例玩转 Java 8 Stream
290 0
20 个实例玩转 Java 8 Stream
|
存储 Java 关系型数据库
20 个实例玩转 Java 8 Stream,写的太好了!
先贴上几个案例,水平高超的同学可以挑战一下: 从员工集合中筛选出salary大于8000的员工,并放置到新的集合里。 统计员工的最高薪资、平均薪资、薪资之和。
20 个实例玩转 Java 8 Stream,写的太好了!