网站链接: 我爱捣鼓
当前位置: 首页 > web开发 > JAVA

从6个方面分析java静态类、方法和非静态类、方法的区别

2022/11/17 22:03:53

静态和非静态的类和方法究竟有什么区别呢,今天我们就从6个方面分析java静态类、方法和非静态类、方法的区别。一、相同点 静态类和非静态类在C#中定义基本是一样的,只是静态类定义需要加上static修饰符而已。二、生命周期 java静态方法(Static Method)与静…

        静态和非静态的类和方法究竟有什么区别呢,今天我们就从6个方面分析java静态类、方法和非静态类、方法的区别。

一、相同点

        静态类和非静态类在C#中定义基本是一样的,只是静态类定义需要加上static修饰符而已。

二、生命周期

        java静态方法(Static Method)与静态成员变量一样,属于类本身,在类装载的时候被装载到内存(Memory),不自动进行销毁,会一直存在于内存中,直到JVM关闭。

        java非静态方法(Non-Static Method)又叫实例化方法,属于实例对象,实例化后才会分配内存,必须通过类的实例来引用。不会常驻内存,当实例对象被JVM回收之后,也跟着消失。

三、效率

        静态方法的使用效率比非静态方法的效率高。

        按照上面的概念,只要内存够用,都可以使用静态的。

四、线程安全

        静态方法是共享代码段,静态变量是共享数据段。既然是“共享”就有并发(Concurrence)的问题。

        非静态方法是针对确定的一个对象的,所以不会存在线程安全的问题。

        静态方法和实例方法是一样的,在类型第一次被使用时加载。调用的速度基本上没有差别。

五、静态成员与非静态成员比较

        1、静态成员属于类所有,非静态成员属于类的实例所有。

        2、每创建一个类的实例,都会在内存中为非静态成员新分配一块存储;非静态成员属于类所有,为各个类的实例所公用,无论类创建了多少实例,类的静态成员在内存中只占同一块区域。

六、使用不同

        1、静态方法属于类所有,类实例化前即可使用。

        2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。

        3、因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存,static内部只能出现static变量和其他static方法!而且static方法中还不能使用this….等关键字..因为它是属于整个类!

        4、静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。

        5、静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存.

        通过以上内容我们知道了java静态类、方法和非静态类、方法的区别。感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!

相关资讯

  • springboot项目设置session生命周期时间的几种方法?

    java开发的springboot项目设置session生命周期时间的方法有三种,今天我们就来说说这三种方法。一丶修改Tomcat配置web.xml文件 在Tomcat服务器对应conf配置文件夹下的web.xml文件中修改<session-time-out></session-time-out>中的值. Tomcat默…

    2022/11/12 12:35:20
  • 图文教程一步一步教你在​idea中使用svn如何创建分支?

    我们在用idea开发java项目时需要通过svn创建项目分支,这样更高效率的开发新的项目,今天我们就通过图文教程一步一步教你idea中如何创建分支?第一步第二步第三步 通过以上内容我们知道了在idea中使用svn如何创建分支。感谢您访问“我爱捣鼓(www.woaidaogu.com)”…

    2022/11/12 12:23:28
  • java函数中如何返回多个值?

    我们一般在写java函数时只会返回一个值,但有时我们需要在函数中返回多个值应该怎么办呢?使用数组 数组可用于返回基本数据类型和引用数据类型。 例如,下面的getCoordinates方法返回double数组:double[] getCoordinatesDoubleArray() { double[] coordi…

    2022/11/8 22:08:01