zoukankan      html  css  js  c++  java
  • java中静态类与普通类之间区别

    所谓静态,指以static关键字修饰的,包括类,方法,块,字段。

    非静态,指没有用static 修饰的。

    一、静态类的特点

    1.全局唯一,任何一次的修改都是全局性的影响

    2.只加载一次,优先于非静态

    3.使用方式上不依赖于实例对象。

    4.生命周期属于类级别,从JVM 加载开始到JVM卸载结束。

    二、静态类和非静态类之间的区别

    1. 内部静态类不需要有指向外部类的引用。但非静态内部类需要持有对外部类的引用
    2. 非静态内部类能够访问外部类的静态和非静态成员。静态类不能访问外部类的非静态成员。他只能访问外部类的静态成员
    3. 一个非静态内部类不能脱离外部类实体被创建,一个非静态内部类可以访问外部类的数据和方法,因为他就在外部类里面
    复制代码
    package com.example.mybatisplus.controller;
    
    /**
     * @ClassName: OutClass
     * @Description:
     * @Author: xf
     * @Date: 19.6.27 10:59
     * @Version: 1.0
     */
    public class OutClass {
    
        /**
         *  全局静态变量
         */
        private static final String msg = "i love java";
         // 创建静态类
        public static class staticInnerClass{
             public void showMsg() {
                 System.out.println("静态内部类展示信息:"+msg);
             }
    
        }
        // 创建非静态内部类
        public class InnerClass{
            public void disPlayMsg() {
                System.out.println("非静态内部类展示信息:"+msg);
            }
        }
    
        public static void main(String[] args) {
            // 创建静态内部类实例
            staticInnerClass sic = new OutClass.staticInnerClass();
            sic.showMsg();
    
            // 创建非静态内部类实例,需要先创建外部类的实例 OutClass().new
            InnerClass ic = new OutClass().new InnerClass();
            ic.disPlayMsg();
    
        }
    }
    复制代码

    其实就是静态类不用先创建外部类。可以静态类看做外部类的静态变量,使用就不要外部类实例;而非静态就必须先实例化。

  • 相关阅读:
    js 表格上下移动 javascript实现
    存储过程-----DECLARE---实用注意事项
    储存过程-原理、语法、函数详细说明
    第九章 接口
    第八章 多态
    第七章 类复用
    synchronized ---- 作用
    集合框架综述
    java static代码块执行时机
    状态模式
  • 原文地址:https://www.cnblogs.com/tiancai/p/13025144.html
Copyright © 2011-2022 走看看