首页 > 代码库 > 03.静态和非静态的区别

03.静态和非静态的区别

静态和非静态的区别
方法,字段,属性都可以被static修饰.

(1).在非静态类中,即可有实例(非静态)成员,可以有静态成员.
    静态成员和非静态成员在调用上有什么不一样呢?
    (1.1)非静态成员(实例成员)必须被实例化对象之后,的对象名来调用.
           对象名.实例成员名;
    (1.2)静态成员必须被定义它的类的类名来调用.
           类名.静态成员名;      //注意,如果要在定义静态方法的类的内部使用静态
                                              方法,我们可以省略类名.直接写.
    (1.3).静态方法可以访问静态成员,但是静态方法不可以访问非静态成员(实例成员).
            实例成员可以访问非静态成员(实例成员),也可以访问静态成员.

(2)在静态类中,只能允许有静态成员,不能允许出现非静态成员(实例成员).
    (2.1)不允许创建静态类的对象(实例),即静态类不允许被实例化.
          为什么静态类不能被实例化呢?
          因为静态类中只允许有静态成员,而静态成员必须以类名.成员名的形式去
          调用,所以实例化对象毫无意义.

(3)什么时候使用静态类,什么时候使用实例类呢?
    (3.1)如果我们想把自己定义的某个类当成"工具类"(比如Console类)来使用,这个时            候,我们可以考虑将这个类定义成静态类.
    (3.2)静态类在整个项目中,是资源共享的.  
           类是不占内存的,对象是占内存的,但是,静态类也占用内存的.


内存:
在计算机中我们人为的将内存分为5块.
程序员经常使用的区域是;
静态存储区域    静态类就在静态存储区域中.

静态类,是越多越好还是越少越好呢?
因为(1).静态类占用内存资源
        (2).静态类占用的内存资源只能在程序全部结束之后,才会释放内存资源.

释放资源:
    GC Garbage Collection 垃圾回收器


来自为知笔记(Wiz)


03.静态和非静态的区别