java static作用

Java (17) 2024-03-18 18:12

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、匿名内部类只能被使用一次,用来创建一个对象。它没有名字,没有构造方法,但可以根据参数列表,调用对应的父类构造方法。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

发表回复