当前位置: 首页 > news >正文

吴桥做网站东莞网页设计哪家设计网站好?

吴桥做网站,东莞网页设计哪家设计网站好?,枣庄网站制作,网站建设服务是什么意思#x1f4dd;个人主页#xff1a;哈__ 期待您的关注 目录 一、无继承关系类的初始化 1、静态变量k被初始化 2、静态变量t1初始化 3、静态变量 t2初始化 4、静态变量i初始化 5、静态变量n初始化 6、静态块初始化 7、非静态块初始化 8、非静态属性初始化 9、执行构造… 个人主页哈__ 期待您的关注  目录 一、无继承关系类的初始化 1、静态变量k被初始化 2、静态变量t1初始化 3、静态变量 t2初始化 4、静态变量i初始化 5、静态变量n初始化 6、静态块初始化 7、非静态块初始化 8、非静态属性初始化 9、执行构造方法 二、有父类继承的初始化  在日常使用Java的时候我们都接触过new这个关键字那你是否知道在我们的对象真正创建出来之前都做了哪些事情呢 实际上要去判断一个类的初始化的顺序需要分一下情况一种是没有继承关系的类不考虑Object类一种是有继承关系的类。 一、无继承关系类的初始化 先看下边的代码。有着这样的一个类InitializeDemo 我们直接运行main方法你知道会打印出来什么吗 public class InitializeDemo {private static int k 1;private static InitializeDemo t1 new InitializeDemo(t1);private static InitializeDemo t2 new InitializeDemo(t2);private static int i print(i);private static int n 99;{print(初始化块);j100;}public InitializeDemo(String str){System.out.println((k): str ii. nn);i;n;}static{print(静态块);n100;}private int j print(j);public static int print(String str){System.out.println((k): str ii. nn);n;return i;}public static void main(String[] args) {InitializeDemo i new InitializeDemo(test);} }打印结果如下所示。 想要弄明白这个我就得先了解一下类的生命周期了。我们通过主方法运行Java程序而这个主方法中创建了i对象并且属于InitializeDemo 类所以在main方法执行时会将我们的类进行初始化。 在我们的类第一次进行初始化的时候我们类中的静态块和静态属性会被优先构建。之后才轮得到非静态块和非静态属性。 当你知道了上边的规则之后我们来看代码类中有五个静态属性一个非静态属性一个静态块一个非静态块还有一个静态方法。我们优先构建静态方法、属性和静态块之后在构建非静态块。 这里我总结出第一条规则。 类的一个对象进行初始化按照代码顺序从上往下先构建静态的属性、方法和静态块之后在构建非静态块和非静态属性。类中的静态块和静态变量只会初始化一次也就是类第一次被用到的时候 1、静态变量k被初始化 private static int k 1; 2、静态变量t1初始化 private static InitializeDemo t1 new InitializeDemo(t1); 这里还要说一下这个静态变量是创建自己的类的对象代码执行到这一行就要进行一个对象的初始化过程了。遇到这种创建本类对象的我们按照以下的第二条规则。 一个类中有静态的本类对象创建的过程从上到下先执行本类的非静态块和非静态属性最后在执行构造方法。  那么我们初始化t1的时候就要从上向下找非静态块和非静态属性如果有的话 最后在执行构造方法。 {print(初始化块);j100;} 我们调用print函数并且将j的值修改为100这样就出现了我们的第一行。 之后往下走走到了这一行代码。这行代码定义了j变量并且调用了print方法所以也就有了我们的第二行。 private int j print(j); 最后调用构造方法。打印我们的第三行。 现在你是否清楚了前三行输出结果是怎么来的了吗这前三行的结果都是t1进行初始化时非静态块和非静态变量的执行结果。 3、静态变量 t2初始化 搞明白了t1是如何初始化的t2就和t1一模一样了这里不讲解。 4、静态变量i初始化 静态变量i的初始化用到了print函数这也就是第七行为什么会打印的原因。 private static int i print(i); 5、静态变量n初始化 private static int n 99; 6、静态块初始化 这里调用print函数也就是第八行的由来。 static{print(静态块);n100;} ok到了这一步我们的静态属性和静态块已经从上到下全部初始化完成了。但你要知道我们在上边初始化的非静态块和非静态属性所打印的语句是我们的t1和t2对象引起的并非我们主方法内构建的i对象引起的接下来还要初始化我们的非静态块和属性。 7、非静态块初始化 第九行的由来。 {print(初始化块);j100;} 8、非静态属性初始化 第十行的由来。 private int j print(j); 9、执行构造方法 第十一行的由来。 public InitializeDemo(String str){System.out.println((k): str ii. nn);i;n;} 以上就是我们的一个类的构建过程这里我给大家一张图自己画的。 这里需要注意以下非静态属性如果创建的是自己的本类对象的话那么会报错的。原理也很简单就是一个循环创建的过程导致栈溢出。 二、有父类继承的初始化  和没有父类继承初始化大同小异我定义了这样的一个类让InitializeDemo去继承。为了便于还是懵懂的同学理解我把静态变量t1和t2删掉。 public class InitializeDemoFather {{System.out.println(父类初始化块);}static{System.out.println(父类静态块);}public InitializeDemoFather(){System.out.println(父类构造函数);} }来看看我们现在的打印结果。 我给大家讲一下初始化的顺序大家就明白了这里用一张图来表示。 对应着上边的图是不是一看就有点思路了呢  如果你可以完整的走出以上的输出顺序你就可以把t1和t2对象加上去了不过不要被输出顺序所迷惑就比如说你可能会看到父类静态块和属性初始化完成后初始化的不是子类的静态块和静态属性而是父类的非静态块和非静态属性。你应该认真的思考一下这个 输出的父类的非静态块和非静态属性初始化的语句到底是从何而来
http://www.hkea.cn/news/14260250/

相关文章:

  • 郑州国际装备制造业会展网站的建设百度有专做优化的没
  • 公司网站制作服务烟台免费网站建设
  • 永州城乡建设网站上海市建设安装协会网站
  • 餐饮网站建设案例网页制作代码简单
  • 利用网站做淘宝客企业163邮箱登录
  • 仪征市城乡建设局网站佛山新网站建设怎么样
  • 单位网站建设情况调查情况安徽建设银行 招聘网站
  • 冷水江网站主题网站建设平台
  • 张家港网站建设桐柏微网站建设
  • 企业网站搭建费用wordpress 抱歉您不能访问此页面
  • 外贸网站建设长沙设计师建站网站
  • 网站建设新闻++常识网站建设基本功能
  • 网站用什么建设wordpress怎么修改菜单栏关键词
  • 建设网站必备的开发工具装饰工程预算与报价
  • 西安志成网站建设公司建筑公司网站管理员
  • 门户网站建设 考核温州做网站优化
  • 互动网站欣赏做外贸卖小商品是哪个网站
  • 东莞住房和城乡建设厅网站做百度手机网站点击
  • 展示网站开发软件开发详细流程
  • asp做网站的缺点湖南建筑人才网招聘
  • 自己用自己电脑做网站空间知乎 网站建设
  • 淘宝网站icp备案wordpress仿36kr主题
  • 学校官方网站个人信用信息服务平台
  • 网站建设付款页面WordPress导入hexo
  • 在建设局网站上怎么样总监解锁杭州网络营销推广公司
  • 怎么做黑客攻击网站网站域名收费
  • o2o平台网站建设wordpress前端验证
  • 建筑工程 技术支持 东莞网站建设360建筑网证书估价
  • 做网站需要多少深圳微信商城网站设计费用
  • 响应式建站网站网站建设 标书