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,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习

目录
相关文章
|
5天前
|
前端开发 JavaScript Java
Java与JavaScript的区别与联系:有人的地方就有江湖,有浏览器的地方就有JavaScript
Java与JavaScript的区别与联系:有人的地方就有江湖,有浏览器的地方就有JavaScript
|
6天前
|
存储 Java 编译器
【Java开发指南 | 第八篇】Java变量、构造方法、创建对象
【Java开发指南 | 第八篇】Java变量、构造方法、创建对象
18 3
|
5天前
|
消息中间件 前端开发 Java
java面试刷题软件kafka和mq的区别面试
java面试刷题软件kafka和mq的区别面试
|
6天前
|
Java
【Java开发指南 | 第九篇】访问实例变量和方法、继承、接口
【Java开发指南 | 第九篇】访问实例变量和方法、继承、接口
15 4
|
6天前
|
Java 开发框架 XML
JDK、JRE、Java SE、Java EE和Java ME有什么区别?
JDK、JRE、Java SE、Java EE和Java ME有什么区别?
|
6天前
|
Java
java一分钟之-字符流与字节流的区别
【5月更文挑战第11天】Java的输入输出通过流操作,分为字符流和字节流。字节流处理二进制数据,如图片、音频,基类是`InputStream`和`OutputStream`;字符流处理文本,基类是`Reader`和`Writer`。字符流涉及编码转换,字节流不涉及。易错点包括乱码(需指定编码)、混用流类型和忘记关闭流。示例展示了字节流和字符流读文件。理解区别并注意编码和资源管理可提高代码质量。
36 3
|
6天前
|
小程序 Java 容器
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
10 0
|
存储 Java 关系型数据库
20 个实例玩转 Java 8 Stream
20 个实例玩转 Java 8 Stream
248 0
20 个实例玩转 Java 8 Stream
|
存储 Java 关系型数据库
20 个实例玩转 Java 8 Stream,写的太好了!
先贴上几个案例,水平高超的同学可以挑战一下: 从员工集合中筛选出salary大于8000的员工,并放置到新的集合里。 统计员工的最高薪资、平均薪资、薪资之和。
20 个实例玩转 Java 8 Stream,写的太好了!
|
1天前
|
安全 Java 程序员
深入理解Java并发编程:线程安全与性能优化
【5月更文挑战第20天】本文将深入探讨Java并发编程的核心概念,包括线程安全和性能优化。我们将详细解析synchronized关键字、ReentrantLock类以及java.util.concurrent包中的高级工具类,如Semaphore、CountDownLatch和CyclicBarrier等。通过实例演示如何使用这些工具来提高多线程程序的性能和可靠性。