群辉做网站服务器配置建设网站要用什么软件
群辉做网站服务器配置,建设网站要用什么软件,seo建网站,uml电子商务网站建设文档程序中代码执行的顺序非常重要#xff0c;稍有不慎便会是程序运行出错#xff0c;那么我将结合实例来分析代码中的执行。名词解释首先了解几个名词#xff1a;非静态代码块直接由 { } 包起来的代码#xff0c;称为非静态代码块静态代码块直接由 static { } 包起来的代码稍有不慎便会是程序运行出错那么我将结合实例来分析代码中的执行。名词解释首先了解几个名词非静态代码块直接由 { } 包起来的代码称为非静态代码块静态代码块直接由 static { } 包起来的代码称为静态代码块形参比如你定义一个函数void add(int a, int b)这里的a和b就是形参。当你进行函数调用的时候add(1, 2)这里的1和2就是实参。向前引用所谓向前引用就是在定义类、接口、方法、变量之前使用它们。成员变量在类体里面定义的变量称为成员变量如果该成员变量有 static 关键字修饰则该成员变量称为 静态变量 或 类变量如果该成员变量没有 static 关键字修饰则该成员变量被称为 非静态变量 或 实例变量。局部变量形参、方法内定义的变量、代码块中定义的变量都属于局部变量。类变量 (静态变量)可以向前引用变量属于类本身类变量不依赖类的实例类变量只在初始化时候在方法区中被分配一次空间无论类的实例被创建几次都不再为类变量分配空间通过类的任意一个实例来访问类变量底层都将将其转为通过类本身来访问类变量它们的效果是一样的一旦类变量的值被改变通过类或类的任意一个实例来访问类变量得到的都将是被改变后的值将在类的初始化之前初始化实例变量(非静态变量)不能向前引用如果向前引用则称为非法向前引用这是不允许的变量属于类的实例对象随着类的实例被创建而分配内存空间实例演示public class Parent {public int parentNum0;public static int staticParentNum0;{System.out.println(Parent---执行非静态代码块了1);}{System.out.println(Parent---执行非静态代码块了2);}static{System.out.println(Parent---执行静态代码块了1);}static{System.out.println(Parent---执行静态代码块了2);}public Parent(){System.out.println(Parent---无参构造函数);}public Parent(int parentNum){this.parentNumparentNum;System.out.println(Parent---有参构造函数);}public void ParentMethod(int parentNum){this.parentNumparentNum;System.out.println(Parent---非静态方法/parentNumparentNum);}public static void staticParentMethod(int staticParentNum){Parent.staticParentNumstaticParentNum;System.out.println(Parent---静态方法/staticParentNumstaticParentNum);}}public class Child extends Parent{public int childNum0;public static int staticChildNum0;{System.out.println(Child---执行非静态代码块了1);}{System.out.println(Child---执行非静态代码块了2);}static{System.out.println(Child---执行静态代码块了1);}static{System.out.println(Child---执行静态代码块了2);}public Child(){super();System.out.println(Child---无参构造函数);}public Child(int childNum){super(childNum);System.out.println(Child---有参构造函数);}public void childMethod(int childNum){this.childNumchildNum;System.out.println(Child--非静态方法/childNumchildNum);}public static void staticChildMethod(int staticChildNum){Child.staticChildNumstaticChildNum;System.out.println(Child---静态方法/staticChildNumstaticChildNum);}}package test;public class Test {// static{// System.out.println(Test---静态代码块);// }public static void main(String[] args) {int key10;switch (key) {case 0:Parent parentnew Parent();break;// Parent---执行静态代码块了1// Parent---执行静态代码块了2// Parent---执行非静态代码块了1// Parent---执行非静态代码块了2// Parent---无参构造函数// 说明先加载静态代码块后加载非静态代码块case 1:Child b new Child();break;// Parent---执行静态代码块了1// Parent---执行静态代码块了2// Child---执行静态代码块了1// Child---执行静态代码块了2// Parent---执行非静态代码块了1// Parent---执行非静态代码块了2// Parent---无参构造函数// Child---执行非静态代码块了1// Child---执行非静态代码块了2// Child---无参构造函数// 说明创建子类会先执行父类先执行父类静态——子类静态——父类非静态——父类构造//——子类非静态——子类构造case 2:Child c new Child(4);//这个构造函数中指明了调用父类的有参构造函数若不指定则调用父类无参构造函数break;// Parent---执行静态代码块了1// Parent---执行静态代码块了2// Child---执行静态代码块了1// Child---执行静态代码块了2// Parent---执行非静态代码块了1// Parent---执行非静态代码块了2// Parent---有参构造函数// Child---执行非静态代码块了1// Child---执行非静态代码块了2// Child---有参构造函数说明静态代码块或非静态代码块执行顺序按照代码前后编写顺序。case 3:Child d new Child();Child e new Child(4);break;// Parent---执行静态代码块了1// Parent---执行静态代码块了2// Child---执行静态代码块了1// Child---执行静态代码块了2// Parent---执行非静态代码块了1// Parent---执行非静态代码块了2// Parent---无参构造函数// Child---执行非静态代码块了1// Child---执行非静态代码块了2// Child---无参构造函数// Parent---执行非静态代码块了1// Parent---执行非静态代码块了2// Parent---有参构造函数// Child---执行非静态代码块了1// Child---执行非静态代码块了2// Child---有参构造函数说明创建多个子类但父类静态代码块只执行一次。case 4:Child.staticChildMethod(4);break;// Parent---执行静态代码块了1// Parent---执行静态代码块了2// Child---执行静态代码块了1// Child---执行静态代码块了2// Child---静态方法/staticChildNum4说明静态方法只可以调用静态变量。case 5:Parent.staticParentMethod(5);break;// Parent---执行静态代码块了1// Parent---执行静态代码块了2// Parent---静态方法/staticParentNum5说明静态方法可通过 父类名.静态方法() 调用。case 6:System.out.println(父类的静态变量值staticParentNumParent.staticParentNum);break;// Parent---执行静态代码块了1// Parent---执行静态代码块了2// 父类的静态变量值staticParentNum0说明调用静态变量时静态代码块会执行。case 7:System.out.println(子类的静态变量值staticChildNumChild.staticChildNum);break;// Parent---执行静态代码块了1// Parent---执行静态代码块了2// Child---执行静态代码块了1// Child---执行静态代码块了2// 子类的静态变量值staticChildNum0说明调用子类静态变量父类静态代码块和子类静态代码块会被执行。case 8:System.out.println(父类的静态变量值staticParentNumParent.staticParentNum);System.out.println(子类的静态变量值staticChildNumChild.staticChildNum);break;// Parent---执行静态代码块了1// Parent---执行静态代码块了2// 父类的静态变量值staticParentNum0// Child---执行静态代码块了1// Child---执行静态代码块了2// 子类的静态变量值staticChildNum0case 9:Child f new Child();f.ParentMethod(3);break;// Parent---执行静态代码块了1// Parent---执行静态代码块了2// Child---执行静态代码块了1// Child---执行静态代码块了2// Parent---执行非静态代码块了1// Parent---执行非静态代码块了2// Parent---无参构造函数// Child---执行非静态代码块了1// Child---执行非静态代码块了2// Child---无参构造函数// Parent---非静态方法/parentNum3说明创建子类用子类调用父类方法非静态方法可以调用静态变量。default:break;}}}总结Java代码初始化顺序由 static 关键字修饰的(如类变量(静态变量)、静态代码块)将在类被初始化创建实例对象之前被初始化而且是按顺序从上到下依次被执行。静态(类变量、静态代码块)属于类本身不依赖于类的实例。没有 static 关键字修饰的(如实例变量(非静态变量)、非静态代码块)初始化实际上是会被提取到类的构造器中被执行的但是会比类构造器中的代码块优先执行到非静态(实例变量、非静态代码块)的地位是相等的它们将按顺序被执行。类变量(静态变量)、实例变量(非静态变量)、静态代码块、非静态代码块的初始化时机由 static 关键字修饰的(如类变量[静态变量]、静态代码块)将在类被初始化创建实例对象之前被初始化而且是按顺序从上到下依次被执行没有 static 关键字修饰的(如实例变量[非静态变量]、非静态代码块)初始化实际上是会被提取到类的构造器中被执行的但是会比类构造器中的 代码块优先执行到其也是按顺序从上到下依次被执行。容易混淆的一个知识点静态方法只允许直接访问静态成员而实例方法中可以访问静态成员和实例成员原因是类还没有实例化所实例成员也没有被创建静态方法中因此也不能用this。欢迎关注公众号交流
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89275.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!