4.6 static关键字
发布日期:2021-05-07 06:39:25 浏览次数:26 分类:精选文章

本文共 1043 字,大约阅读时间需要 3 分钟。

  • 实例变量和类变量的区别
  • 实例方法和类方法的区别

 

类体的定义包括成员变量的定义和方法的定义

成员变量又分为实例变量类变量,用static修饰的变量是类变量

两个变量的生命周期不同

      成员变量随着对象的创建而存在,随着对象的回收而释放。

      静态变量在第一次被访问时创建,在程序结束时销毁。

数据存储位置不同

      成员变量存储在堆内存的对象中,所以也叫对象的特有数据。

      静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。

除了构造方法外,其他的方法又分为实例方法类方法,在方法声明中用关键字static修饰的方法称为类方法或者静态方法

 

注意:

实例方法可以调用该类的实例方法和类方法

类方法只能调用该类的类方法,不能调用实例方法

 

一:实例变量和类变量的区别

一个类可以通过new运算符创建多个不同的对象,这些对象将被分配不同的内存空间

其中,不同对象的实例变量分配不同的内存空间

如果类中有类变量,所有对象的类变量都分配在相同的内存空间

如果改变一个对象的这个类的类变量,会影响其他对象的这个类变量

也就是对象共享类变量

 

 

Java程序执行------类的字节码文件被加载到内存------类变量被分配到内存,如果类没创建对象,类中的实例方法不会分配内存,如果类有创建对象,不同对象的实例变量分配不同的内存空间,而类变量不会重新分配内存------程序退出,类变量释放占有的内存

 

注意:

  1. 改变一个对象的类变量就同时改变了其他对象的这个类变量
  2. 类变量可以通过某个对象访问,也可以直接通过类名访问
  3. 改变一个对象的实例变量不会改变其他的对象的实例变量
  4. 实例变量可以通过对象访问,不能使用类名直接访问

 

 

二:实例方法和类方法的区别

对象在创建之后,都可以用“.”运算符调用这些方法

 

 

Java程序执行------类的字节码文件被加载到内存------

1.类方法分配入口地址,因此类名也能调用,类方法的入口地址直到程序退出才取消

2.类的实例方法不会分配入口地址,在该类创建对象后,类的实例方法才分配入口地址(注意的是:第一个对象创建后分配入口地址,后面的不会再分配,方法的入口地址被所有对象共享,当所有对象不存在时候才取消方法的入口地址)

 

注意:

(1)在java语言中,类方法不可以操作实例变量和实例方法

那是因为在类创建对象之前,实例成员变量还没有分配内存,实例方法也还没有入口地址

(2)如果一个方法不用操作实例变量就能实现功能,可以考虑声明为类方法,这样可以避免创建对象浪费内存

上一篇:4.7 this关键字
下一篇:4.4 参数传递

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月03日 18时06分28秒