浙江城乡住房建设厅网站,免费的求职简历模板网站,wordpress主题图片,wordpress5.1用什么php版本在面试中回答的很不全#xff0c;所以再此做一个总结。
1 static 静态修饰符
在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的。 static修饰表示静态的#xff0c;在类加载时JVM会把它放到方法区#xff0c;被本类以及本类中所有实例所公用。在编译后所分…在面试中回答的很不全所以再此做一个总结。
1 static 静态修饰符
在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的。 static修饰表示静态的在类加载时JVM会把它放到方法区被本类以及本类中所有实例所公用。在编译后所分配的内存会在一直存在直到程序退出内存才会释放这个空间。如果一个被所有实例公用的方法被申明为static那么就可以节省空间了不用每个实例初始化的时候都被分配到内存。
2.内部类
定义在一个类内部的类叫内部类包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制可以声明 为abstract的供其他内部类或外部类继承与扩展或者声明为static、final的也可以实现特定的接口。外部类按常规的类访问方式使用内部 类唯一的差别是外部类可以访问内部类的所有方法与属性包括私有方法与属性。
3.静态类只有内部类才能被声明为静态类即静态内部类
1.只能在内部类中定义静态类 2.静态内部类与外层类绑定即使没有创建外层类的对象它一样存在。 3.静态类的方法可以是静态的方法也可以是非静态的方法静态的方法可以在外层通过静态类调用而非静态的方法必须要创建类的对象之后才能调用。 5.只能引用外部类的static成员变量也就是类变量。 6.如果一个内部类不是被定义成静态内部类那么在定义成员变量或者成员方法的时候是不能够被定义成静态的。
以上稍微介绍了一下静态类接下来将用代码来分析静态内部类与非静态内部类的区别。
public class OutClassTest {int out11;static int out21;void out(){System.out.println(非静态);}static void outstatic(){System.out.println(静态);}public class InnerClass{void InnerClass(){System.out.println(InnerClass!);System.out.println(out1);System.out.println(out2);out();outstatic();//静态内部类只能够访问外部类的静态成员}// static void inner(){} static int i1; 非静态内部类不能有静态成员方法、属性}public static class InnerstaticClass{void InnerstaticClass(){System.out.println(InnerstaticClass);// System.out.println(out1);out(); 静态内部类只能够访问外部类的静态成员System.out.println(out2);outstatic();}static void innerstatic(){} static int i1;//静态内部类能有静态成员方法、属性}public static void main(String args[]){OutClassTest anew OutClassTest();OutClassTest.InnerstaticClass bnew OutClassTest.InnerstaticClass();//创建静态内部类OutClassTest.InnerClass ca.new InnerClass();//创建非静态内部类}
}1234567891011121314151617181920212223242526272829303132333435总结
1.是否能拥有静态成员 静态内部类可以有静态成员(方法属性)而非静态内部类则不能有静态成员(方法属性)。 2.访问外部类的成员 静态内部类只能够访问外部类的静态成员,而非静态内部类则可以访问外部类的所有成员(方法属性)。 3.静态内部类和非静态内部类在创建时有区别
//假设类A有静态内部类B和非静态内部类C创建B和C的区别为
A anew A();
A.B bnew A.B();
A.C ca.new C();1234