Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说java static作用,希望能够帮助你!!!。
static修饰类时,只能修饰静态内部类,如果在外部类上声明为static,程序编译不通过。
静态内部类特点:
1、可以有外部类能够拥有的所有属性:静态变量、静态方法、静态代码块、成员变量、成员方法、构造方法;
2、可以使用外部类的静态成员变量和静态方法(不管是否私有);但是无法访问成员变量和成员方法;
3、public静态内部类可以被外部使用,只是需要通过“外部类.静态内部类”的方式使用(在同一个包内使用时,静态内部类无需声明为public也可以使用)。
4、静态类内部也可以定义静态内部类,详见ThreadLocal类中ThreadLocalMap中的Entry类。
作用:被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
static方法一般称作静态方法,没有this,无法访问类的非静态成员和非静态方法。
static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。static成员变量的初始化顺序按照定义的顺序进行初始化。
在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。
第一,内部类可以访问其所在类的属性(包括所在类的私有属性),内部类创建自身对象需要先创建其所在类的对象;
第二,可以定义内部接口,且可以定义另外一个内部类实现这个内部接口
第三,可以在方法体内定义一个内部类,方法体内的内部类可以完成一个基于虚方法形式的回调操作
第四,内部类不能定义static元素
第五,内部类可以多嵌套
1、方法内部类是值类定义在方法内部,只能在定义的方法中使用。
2、如果方法是类的成员方法,方法内部类不仅可以使用静态变量和方法,也可以使用成员变量和方法;
3、如果方法是类的静态方法,方法内部类只能使用静态变量和方法;
4、方法内部类也可以使用方法的参数和方法的局部变量,不过这些变量必须被声明为final。(方法内部类内部实现时其实是生成了一个实例变量指向外部对象,在构造方法中被初始化,方法内部类可以访问方法中参数和局部变量,也是通过在构造方法中传递参数实现的,因此,方法内部类操作的并不是外部的变量,而是他自己的实例变量,只是和外部一样,对这些变量赋值,并不会改变外部的值,为避免回校,干脆声明为final)
public class TestInner {
private int a=10;
private static String staticPara="staticPara";
public static void showOuter(){
System.out.println("Outer staticPara:"+staticPara);
}
public void test(final int para){
final String str="hello";
class Inner{
private int b=20;
public void innerTest(int c){
System.out.println("Outer a:"+a);
System.out.println("Inner b:"+b);
System.out.println("Outer static:"+staticPara);
System.out.println("Outer method para:"+para);
System.out.println("Inner method para:"+c);
System.out.println("Inner local para:"+str);
showOuter();
}
}
final Inner inner = new Inner();
inner.innerTest(100);
}
public static void main(String[] args) {
final TestInner testInner = new TestInner();
testInner.test(88);
}
}
匿名内部类通常与new关联,在创建对象的时候定义类,new后面呢是父类或者父类接口,然后是括号,里面是可以传递给父类构造方法的参数,最后是大括号{}.里面是类的定义。
1、匿名内部类只能被使用一次,用来创建一个对象。它没有名字,没有构造方法,但可以根据参数列表,调用对应的父类构造方法。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
下一篇