首页 > 编程语言 >java如何不创建对象就可以使用静态方法(类方法)System类等

java如何不创建对象就可以使用静态方法(类方法)System类等

时间:2023-10-31 22:15:38浏览次数:35  
标签:初始化 静态方法 对象 创建对象 System 实例 加载

对象初始化一定有类加载,但是类加载不一定会对象初始化,静态方法不需要创建对象就能调用,这是因为静态方法属于类而不是对象。
在Java中,静态方法是属于类的方法,而不是属于特定的对象实例的方法。当类加载到内存中时,静态方法也会加载到内存中。因此,可以直接通过类名来调用静态方法,而不需要先创建类的实例。

(1)对象的初始化过程(创建对象的过程 例: P p = new P())
类加载:当程序第一次使用到某个类时,Java虚拟机会加载该类的字节码文件,并对类进行解析和验证。

分配内存

初始化默认值

执行构造器

返回对象的引用

通过上述对象初始化过程可以知道 类加载 和 对象初始化 是两个概念

对象初始化一定有类加载,但是类加载不一定会对象初始化

(2)静态方法不需要创建对象就能调用,这是因为静态方法属于类而不是对象。
在Java中,静态方法是属于类的方法,而不是属于特定的对象实例的方法。当类加载到内存中时,静态方法也会加载到内存中。因此,可以直接通过类名来调用静态方法,而不需要先创建类的实例。

静态方法通常用于执行通用的、与特定实例无关的操作,例如数学计算、工具方法等。

(3)类什么时候加载
类加载是由Java虚拟机(JVM)在运行时根据需要进行的操作。类会在下列情况下被加载:

首次创建类的实例:

静态方法/静态变量访问:如果直接引用了类的静态成员(如静态方法或静态变量),JVM会加载并初始化该类。这时只有类的静态成员被加载,而不会创建类的实例。

类被反射调用:

(4)关于普通方法的使用
在Java中,类加载的过程包括加载、连接(验证、准备和解析)和初始化。在此过程中,类的普通方法(非静态方法)并不会被直接加载。

类的普通方法是属于类的实例的方法,只有在创建对象实例时才会在内存中为对象实例分配相应的内存空间,并将方法的代码加载到该实例的方法区中。当对象实例化后,可以通过对象来访问和调用类的普通方法。
————————————————
版权声明:本文为CSDN博主「free_virtue」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/free_virtue/article/details/131773997

标签:初始化,静态方法,对象,创建对象,System,实例,加载
From: https://www.cnblogs.com/xiaolongbiancheng/p/17801688.html

相关文章

  • [Azure Developer]把Azure Function中ILogger对象静态化为静态方法提供日志记录
    问题描述在AzureFunction代码中,有默认的ILogger对象来记录函数的日志,如果函数引用了一些静态对象,是否有办法使用这个默认的ILogger对象来记录日志呢?usingSystem.Net;usingMicrosoft.Azure.Functions.Worker;usingMicrosoft.Azure.Functions.Worker.Http;usingMicrosoft.Ext......
  • [Azure Developer]把Azure Function中ILogger对象静态化为静态方法提供日志记录
    问题描述在AzureFunction代码中,有默认的ILogger对象来记录函数的日志,如果函数引用了一些静态对象,是否有办法使用这个默认的ILogger对象来记录日志呢?usingSystem.Net;usingMicrosoft.Azure.Functions.Worker;usingMicrosoft.Azure.Functions.Worker.Http;usingMicrosoft......
  • Linxu解决systemctl启动服务失败,Error: No space left on device【转】
    查看磁盘空间实际占用情况查看磁盘inodes占用情况这两部发现都没有问题。要是哪里发现被沾满了,直接删除解放空间。此篇是讲另一种情况。查看默认inotify的max_user_watches值[root@VM-4-4-centosnginx]#sysctlfs.inotifyfs.inotify.max_queued_events=16384fs.inotif......
  • systemd中的slice服务单元
    使用场景对一组服务进行管理,比如限制资源使用、调整启动顺序和依赖关系。比如,好几个服务都需要限制内存使用,可以每个服务都加个MemoryLimit=373741824,也可以将这些服务加入到同一个slice,然后,只需要在slice中配置MemoryLimit=373741824。介绍systemd的slice是一种服务单元,用......
  • [20231023]备库与alter system flush buffer_cache.txt
    [20231023]备库与altersystemflushbuffer_cache.txt--//测试遇到的问题,在备库执行altersystemflushbuffer_cache;刷新数据缓存命令无效.--//通过例子验证:1.环境:[email protected]:1521/orcl>@[email protected]:1521/orcl>@pr==============================P......
  • C语言的system("pause")是什么
    ......
  • python面向对象-学习笔记(三、类方法、实例方法、静态方法)
    方法相关方法的概念描述一个目标的行为动作和函数相似封装了一系列行为动作。比如一个人怎么吃,怎么喝,怎么玩...都可以被调用最主要区别:调用方式方法的划分实例方法:默认第一个参数是一个实例类方法:默认第一个参数是类静态方法:没有默认参数注意划分的依据:方法的第一......
  • C#读取记事本,里面有600万条数据,放入数组时:System.OutOfMemoryException
     原因:使用文件流,然后读取文件内容,再解析的时候,会报内存溢出 处理办法:使用/n分隔///<summary>///通过记事本,获取CRM所有客户的某个字段///</summary>///<returns></returns>publicstaticList<string>GetFieldByText(str......
  • Why do I hear a NoiseHiss in the IEM system
    WhydoIhearaNoise/HissintheIEMsystem?WhydoIhearaNoise/HissintheIEMsystem?ThemostcommonhissthatisreferredtoiscausedbyRFinterference.Animportantstepinsettingupasystemistotunetheequipmentproperlytoensurethate......
  • Java拾贝第十二天——System类
    System类的常量常量描述publicfinalstaticInputStreamin系统标准输入,一般是键盘publicfinalstaticPrintStreamout系统标准输出,一般是显示器publicfinalstaticPrintStreamerr错误输出可以看到out和err是PrintStream类型的,而in是InputStream类型......