栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

有无Static修饰的成员函数和成员变量的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有无Static修饰的成员函数和成员变量的区别

1、java的编译和运行

(1)Java编译器,把源文件.java文件编译成.class字节码文件

(2)JVM,把字节码文件转化成当前机器对应的机器语言。

过程:1、类的加载:把.class文件加载到方法区,被static修饰的存放在静态区,没有被static的放在非静态区

           2、链接

           3、运行

2、被Stactic修饰的变量或者方法存储在静态区的 3、Static修饰的成员变量

(1)加载到方法区的时候就分配内存,在方法区的静态区,先于类的对象存在,属于类,被所有类的对象共享,只有一份内存空间

(2)可直接通过类名调用,也可通过对象调用,但通过对象调用在编译后实际时类名调用

3、普通成员变量

(1)加载的时候没有分配内存,在创建类的实例对象时(new),在堆中分配内存,每个对象都有一份

(2)先实例化对象后,通过对象才能调用

4、Static修饰的成员方法(方法只有被调用的时候才会分配内存,静态成员方法也不例外)

(1)静态成员方法内部只能调用静态方法和静态变量,不能调用非静态方法和非静态变量,因为非静态方法和非静态变量只有实例化对象后才会分配内存空间,但是静态成员方法可以通过类名直接调用,这时候非静态方法和非静态变量并没有分配内存

(2)通过类名调用静态成员方法

(3)静态成员方法不压栈,被调用的时候,在方法区分配存储空间

(4)没有this关键字,因为this关键字用来指向当前对象的指针

5、普通的成员变量

(1)非静态成员方法能调用静态和非静态方法和静态和非静态变量

(2)通过对象调用静态成员方法

(3)非静态成员方法被调用时压栈,在栈中分配存储空间

(4)有this关键字,指向当前的对象的指针

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446061.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号