大佬教程收集整理的这篇文章主要介绍了static关键字,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
1.static可以创建独立于具体域对象的变量或者方法,这个方法或者变量不与包含它所对应的类的任何对象包含在一起。也就是说即使没有创建对象,也可以调用这个变量或者方法
2.static可以用来形成静态代码块来优化程序性能。static块可以存放在类的任何一个地方,当类进行加载时,会按照static块的顺序来进行加载,并且只会加载一次。
3.static可以为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建对象。(一个static字段对每个类来说都只有一份存储空间,而非static字段则是对每个对象都有一个存储空间)
1.被static修饰的变量或者方法独立于该类的任何对象,可以理解成这些变量或者方法不属于任何一个实例对象,是被类中所有对象所共享。
2.在一个类第一次加载的时候,就会加载static修饰的部分,而且只在类第一次使用时加载并进行初始化。
3.static变量值在第一次加载的时候就分配了空间,以后创建对象时不会再进行重新分配空间,但是可以赋值。
4.被static修饰的变量或者方法是优先于对象的,也就是说,即使你没有创建对象,也可以调用static修饰的变量或者方法。
成员变量是可以被类中所有对象所共享的,当一个成员变量被static所修饰,那么这个变量就成了静态变量。
静态变量和实例变量有点区别,首先没有被static修饰的成员变量叫做实例变量,实例变量属于这个类的实例对象,也就是说,可以通过创建对象来对它进行调用。两者之间的区别是,静态变量不属于任何实例对象,它是属于类的。在类加载的时候进行分配一次内存空间。实例变量是每次创建对象时,都会为成员变量分配内存空间。
被static修饰的方法叫做静态方法,其实main方法就是一个静态方法。静态方法可以直接被调用,也就是类名.方法名()的方式。
也就是在类中被static包裹的一部分代码,形如static{}
public class staticTest { public staticTest(){ System.out.println("staticTest:构造器初始化"); } { System.out.println("staticTest:初始化块"); } static { System.out.println("staticTest:静态初始化块"); } } class staticTest1 extends staticTest{ public staticTest1(){ System.out.println("staticTest1:构造器初始化"); } { System.out.println("staticTest1:初始化块"); } static { System.out.println("staticTest1:静态初始化块"); } } class staticTest2 extends staticTest1{ public staticTest2(){ System.out.println("staticTest2:构造器初始化"); } { System.out.println("staticTest2:初始化块"); } static { System.out.println("staticTest2:静态初始化块"); } } class staticTest3 extends staticTest2{ public static void main(String[] args) { staticTest2 staticTest2 = new staticTest2(); System.out.println("------"); staticTest staticTest = new staticTest2(); } }
"C:Program FilesjetBrainsIntelliJ IDEA 2019.3.3jbrbinjava.exe" "-javaagent:C:Program FilesjetBrainsIntelliJ IDEA 2019.3.3libidea_rt.jar=65088:C:Program FilesjetBrainsIntelliJ IDEA 2019.3.3bin" -Dfile.encoding=UTF-8 -classpath D:javajavase进阶.ideaoutproductionTest staticTest3 staticTest:静态初始化块 staticTest1:静态初始化块 staticTest2:静态初始化块 staticTest:初始化块 staticTest:构造器初始化 staticTest1:初始化块 staticTest1:构造器初始化 staticTest2:初始化块 staticTest2:构造器初始化 ------ staticTest:初始化块 staticTest:构造器初始化 staticTest1:初始化块 staticTest1:构造器初始化 staticTest2:初始化块 staticTest2:构造器初始化 Process finished with exit code 0
可以看出:静态代码块只初始化一次。
1.静态内部类不可以访问外部类非静态成员。
2.静态内部类不需要创建外部类的对象就可以访问。
3.静态内部类可以有多种权限访问类型。
public class Myself { private static String name = "业平"; private String sex = "男"; //静态内部类可以为public修饰 public static class Person{ //静态内部类可以定义非静态变量 private String address = "山东"; private static String high = "180"; //内部类公用成员 public String age = "20"; public void disPlay(){ //不能访问外部类非静态成员 //System.out.println(seX); //可以访问静态成员 System.out.println(Name); //访问本内部类成员 System.out.println(address); } } public void play(){ //外部类访问内部类非静态成员需要实例化 Person person = new Person(); person.disPlay(); //System.out.println(high); //System.out.println(agE); System.out.println(person.agE); System.out.println(person.address); } public static void main(String[] args) { Myself myself = new Myself(); myself.play(); } }
输出:
业平 山东 20 山东
以上是大佬教程为你收集整理的static关键字全部内容,希望文章能够帮你解决static关键字所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。