当前位置: 首页 > 后端技术 > Java

Java静态关键字总结

时间:2023-04-01 17:51:08 Java

static当某物是静态的时,意味着该字段或方法不依赖于任何特定的对象实例。即使我们从来没有创建这个类的对象,我们也可以调用它的静态方法或访问它的静态字段,这样就不需要实例化一个新的对象,这会产生开销。.相反,对于普通的非静态字段和方法,我们必须先创建一个对象,并使用这个对象来访问字段或方法,因为非静态字段和方法必须与特定的对象相关联。静态变量和方法classUtil{publicfinalintnum=100;公共静态intstaticNum=100;publicintgetAbs(intnum){returnMath.abs(num);}publicstaticintgetSum(inta,intb){//错误,非静态方法不能访问非静态变量。System.out.println(c);//错误,非静态方法不能访问非静态变量。得到抗体(-10);返回a+b;}}classMain{publicstaticvoidmain(String[]args){//正确,通过class访问静态方法System.out.println(Util.getSum(1,2));//正确,通过类访问静态变量System.out.println(Util.staticNum);//警告,通过类实例调用静态方法等同于Util.getSum(1,2)。//这里虽然不会保存,但是可能会引起一系列的问题,不推荐使用,System.out.println(newUtil().getSum(1,2));}}当使用静态修饰方法时|变量,我们称之为静态方法|变量。静态方法|变量不属于任何对象,因此不能通过this关键字调用方法|变量,只能通过类名访问。类的非静态成员变量和非静态成员方法不能在静态方法中访问,因为类的非静态成员变量和非静态成员方法必须依赖于特定的对象才能被调用。静态代码块类测试{static{System.out.println("staticblock!");}publicTest(){System.out.println("构造函数!");}}publicclassMain{publicstaticvoidmain(String[]args){/***运行结果*静态块!*构造函数!*构造函数!*/新测试();新测试();}}静态代码块只会在类加载时执行一次,下次类加载时不会执行。因此,可以在静态代码块中进行初始化操作,可以大大提高效率。