Java把内存分为栈内存和堆内存,栈内存用来存放一些基本类型的变量和数组及对象的引用变量,而堆内存主要用来放置对象的。
Static:
静态表示的是内存的共享,就是它的每一个实例都指向同一个内存地址;把它改了它就不会变成原样。
特点:
1. 对于静态的东西,JVM在加载类时,就在内存中开辟了这些静态的空间;(类先被加载再创建)
2. 引用static的方法和属性,不需要和实例捆绑在一起,可以提高代码的运行效率
3. Java中main()方法本身是static的,所以main方法的执行就是在没有产生新的实例的情况;
4. 如果要创建一个脱离于实例的变量或方法,那么用static是再好不过的;
5. static可以不通过对象直接通过类调用;
static的方法不可调用其他的方法和属性,只能调用 静态的方法和属性。
静态属性:
类名.变量名;
修饰块:用{。。。。。。}划定的程序块;
可以用static修饰:static{}在类加载的时候开始执行
程序运行的顺序:
先静态后非静态,先父类后子类。
在static方法中不能比任何方式使用this和super;
在继承的时候先初始化父类的静态变量,然后是子类;
静态类:通常一个普通类不允许声明为静态的,只允许内部类。
高级访问控制:
Public(公共):没有限制,开放的极端;
默认:只能在同一个包内访问;
Protect(受保护的):同包下可以访问,包外子类可以访问;
Private:只有自己类的内部可以访问,类中的私有成员子类也不能继承。
类:public和默认。
内部类可以访问外部类的所有成员,外部类不可以访问内部类的private。