静态和非静态

作者: 名字是乱打的 | 来源:发表于2019-11-17 00:42 被阅读0次

一 Java静态和非静态的区别

这里的静态,指以static关键字修饰的,包括类,方法,块,字段。静态变量和静态方法都属于静态对象
非静态,指没有用static 修饰的。

1.静态变量:

  • 由static修饰,在JVM中,静态变量的加载顺序在对象之前,因此静态变量不依附于对象存在,可以在不实例化类的情况下直接使用静态变量。

  • 静态变量属于类,不属于类中任何一个对象,因此静态变量又叫做类变量,一个类不管创建多少个对象(对象是类的一个实例),静态变量在内存中有且仅有一个。

2.实例变量:

  • 必须依附于对象存在,只有实例化类后才可以使用此类中的实例变量。

二、静态方法跟实例方法的区别:

  (1)主要区别:

             静态方法属于类所有,类实例化前(创建对象前)即可通过 类名.方法名 调用

             实例方法必须通过new出来的对象调用

  (2)访问上:

             静态方法只能访问类中的静态成员(即静态成员变量和静态方法)

            实例方法可以访问类中的任何成员

  (3)外部调用:

           静态方法:可以使用  “类名.方法名” 
           或者  “对象名.方法名”  的方式调用(即可以无需创建对象)

          实例方法:只能使用  “对象名.方法名”  的方式调用 

1.静态方法:
方法用static关键字修饰,静态方法与静态成员变量一样,属于类本身,在类装载的时候被装载到内存,不自动进行销毁,会一直存在于内存中,直到JVM关闭。使用时也是不需要实例化类,能够直接使用。静态方法无法被重写

需要注意的是:在静态方法中只能访问类中的静态成员跟静态方法不能直接访问类中的实例变量跟实例方法原因是静态方法在JVM中的加载顺序也在对象之前,直接使用实例变量跟实例方法的话,可能实例变量跟实例方法所依附的对象并没有被创建,会导致无法找到所使用的实例变量跟实例方法。
要想使用实例变量跟实例方法可以采用如下方法:在静态方法中创建实例变量和实例方法所在的对象,通过这个对象来使用实例变量跟实例方法。

2.实例化方法:
属于实例对象,实例化后才会分配内存,必须通过类的实例来引用。不会常驻内存,当实例对象被JVM 回收之后,也跟着消失。

3、线程安全上:
静态方法是共享代码段,静态变量是共享数据段。既然是“共享”就有并发的问题。
非静态方法是针对确定的一个对象的,所以不会存在线程安全的问题。

4、如果静态方法在系统中定义太多,会占用大量的资源,最后造成内存溢出,所以静态方法不能滥用。

相关文章

  • 静态和非静态

    一 Java静态和非静态的区别 这里的静态,指以static关键字修饰的,包括类,方法,块,字段。静态变量和静态方...

  • 静态和非静态

    静态方法在类定义时都已经被装载和分配,非静态方法只有在实例化时才被分配内存。 静态方法的生命周期和相应的类一样长,...

  • 静态内部类与非静态内部类

    静态内部类与非静态内部类的区别 1、非静态内部类不能声明静态成员变量和静态成员方法,而静态内部类可以声明静态和非静...

  • C#笔记二

    一. 静态方法,静态类 (static) 静态和非静态区别 在非静态类(public class)中,既可以有实例...

  • JAVA的静态变量、静态方法、静态类

    静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明。 Java静态对象和非静态对象有什么区别? 比...

  • 关于非静态内部类为什么不能有静态成员的实践

    导引 作为java开发者,我们都知道内部类分为静态内部类和非静态内部类。非静态内部类不能有静态成员(不包括静态常量...

  • 为什么从静态的方法里调用非静态的方法或变量是非法的?

    结论: 非静态的方法可以调用静态的方法,但是静态的方法不可以调用非静态的方法。 类的静态成员(变量和方法)属于类本...

  • Java学习——内部类

    内部类 一,成员内部类(包括静态内部类和非静态内部类) 非静态内部类可以直接访问外部类的成员,反之则不行 非静态内...

  • 新建对象时,构造方法、变量、代码块执行顺序

    场景一:没有父类,或者不关心父类 静态成员(静态代码块、静态变量,按代码顺序执行)非静态成员(非静态代码块、非静态...

  • static关键字

    在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用...

网友评论

    本文标题:静态和非静态

    本文链接:https://www.haomeiwen.com/subject/vniuictx.html