导航:首页 > 编程语言 > java静态方法的加载

java静态方法的加载

发布时间:2023-02-14 21:33:05

java静态资源(静态方法,静态属性)是程序一运行就加载到jvm中,还是当被调用的时候才进行加载呢

当类第一次被调用时加载(静态方法,静态属性的加载就是类加载) 。

1、类中的静态属性会被加入到类对象(也可以叫做类的模板,是类的描述) 的构造器中,静态方法也会被加入到类对象中。

2、当第一次使用类时,JVM会通过类加载器,加载类对象,从而初始化静态属性,并装入类的方法,包括静态方法和实例方法(方法不会被调用,只是加载,从这个意义上来说,静态方法和实例方法是类似的)。

3、当创建类的实例对象时,JVM会调用类的构造器,从而初始化类的属性。

(1)java静态方法的加载扩展阅读:

类(包括静态方法、属性)加载过程:

一、加载。

根据一个类的全限定名(如cn.e.h.test.HelloWorld.class)来读取此类的二进制字节流到JVM内部。

将字节流所代表的静态存储结构转换为方法区的运行时数据结构(hotspot选择将Class对象存储在方法区中,Java虚拟机规范并没有明确要求一定要存储在方法区或堆区中)转换为一个与目标类型对应的java.lang.Class对象。

二、连接。

1、验证。

验证阶段主要包括四个检验过程:文件格式验证、元数据验证、字节码验证和符号引用验证;

2、准备。

为类中的所有静态变量分配内存空间,并为其设置一个初始值(由于还没有产生对象,实例变量将不再此操作范围内);

3、解析。

将常量池中所有的符号引用转为直接引用(得到类或者字段、方法在内存中的指针或者偏移量,以便直接调用该方法)。这个阶段可以在初始化之后再执行。

Ⅱ JAVA中使用静态方法

编程时我们心里一定要清楚静态方法和类的非静态方法方法的区别:
最根本区别从编译角度来说吧:
1)静态(static)方法是编译时直接加载加载到内存中(离cpu最近的一块内存区域也称为堆栈),比如程序的public static main(args []){}方法,你能实例话吗?
静态方法不能被实例化,也不允许被实例化!
现在很多Java集成工具边写边编译的
因此 你可以通过“类名”+“.”+“静态方法的名()”来调用
2)非静态方法(类的非静态方法)通过关键字 “new” 字来实例化一个对象(object),这个对象放在 内存的另一块区域 堆(heap)中。
也就是说编译时,非静态方法必须先实例化类的一个对象,通过“对象名”+“非静态方法名()”来调用;
public class Student
{
private String name;
/************************************************************
*下面两个方法是类的非静态方法封装 属性name,看一下在 main()
*如何调用
************************************************************/
public set(string init_name)
{
this.name = init_name;
}
publc String get()
{
return this.name;
}
//构造函数
public Student(){}
public Student(String init_name)
{
this.name = init_name;
}

//下面是一个静态方法,看一下它在main()中如何调用
public static void PrintClassName()
{
System.out.print("该类的名字:Student");
}
}
//MainClass类
pubic class MainClass
{
public static void main(args[])
{
//先调用静态方法,不需要实例化对象
Student.PrintClassName();
//现在调用非静态方法,一定要实例化对象
Student stu1 = new Student();
stu1.set("Join");
String stu1_name = stu1.get();
}

}

Ⅲ java普通方法和静态方法的加载(注意是加载)时机相同吗存储方法耗费内存空间吗

静态方法放在Date数据区 可以直接调用 和STATIC 变量一样的 在内存开始加载的时候就有空间了 普通方法是 程序运行到的时候才开始调用直接用

Ⅳ 在Java中加载配置文件,使用静态加载和构造方法加载有什么区别

构造方法是只有你在new对象的时候才会执行
静态语句块和静态方法在类加载到内存的时候就已经执行了
静态加载配置文件,在你启动类似tomcat服务的时候就已经执行了

阅读全文

与java静态方法的加载相关的资料

热点内容
ftp服务器需要开放什么端口 浏览:325
ros编译单个进程 浏览:731
如何查别人服务器的地址 浏览:453
mifi热点共享文件夹 浏览:447
java图片转二进制 浏览:490
汽车加密封条保温吗 浏览:564
安卓平板怎么接hdmi信号 浏览:867
压缩气体的能量 浏览:836
北京市软件u盘加密 浏览:681
php循环curl 浏览:319
安卓手机如何把桌面软件放大 浏览:547
数据库文件夹无法删除 浏览:410
加密货币交易所成交量作假 浏览:337
打开应用加密时都有声音 浏览:122
能打开java文件 浏览:787
志愿服务器怎么使用 浏览:135
房贷解压预约怎么操作 浏览:200
苹果下载app内购买怎么弄 浏览:223
单片机按键的原理 浏览:423
安卓如何打开设置中的悬浮窗 浏览:603