已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
初始器可以用来初始化对象和类中的变量,为这些变量赋初始值。初始器主要有下面几种。 表达式型字段初始器 代码块型静态初始器 代码块型实例初始器例题,运行下面的代码会得到什么结果?public class InitializationOrder static int i=5;static int l;int j=7;int k;public InitializationOrder(int m)System.out.println(i+,+j+,+k+,+l+,+m);j=70;l=20;statici=50;public static void main(String args) new InitializationOrder(l);运行结果:代码可以正确编译,运行时打印出50,70,0,20,01、 表达式型变量初始器变量声明语句中利用表达式型初始器可以明确规定变量的初始化。实例代码如下:public class MyClass int i=20;/(1)非静态初始化static double j=20.05;/(2)静态初始化public static void main(String args) /.利用new运算符创建对象的时候,该对象的变量就会被初始化为表达式中所定义的初始值,如上面的代码(1)处。类的初始化使得类的静态变量被赋予初始化值,例如上面的(2)处,这意味着,在初始化类的时候,静态变量j就会初始化。说明:静态变量的表达式型初始器不执行通过名字来引用非静态成员,关键词this和super也不能出现在表达式型静态初始器中。由于实例化之前总会进行类的初始化,表达式型实例初始器总可以引用类的任何静态成员,而不用考虑成员的声明次序。下面的示例代码是正确的。public class MyClass int i=20*j;/(1)非静态初始化static int j=20;/(2)静态初始化public static void main(String args) /.注意:在Java语言中,变量的声明必须位于任何表达式型初始器运用该变量之前。参考下面的代码:public class MyClass int length=10;/ (1)/double are=hi*length*width;/(2)编译错误,因为width应该声明在前double are=hi*length*this.width;/(3)编译正常,因为使用了this关键词,但是width值不是10,而是默认的初始值int width=10;/int sq=height=20;/(5)合法的表达式(在对height赋值左侧作出前向引用)int height;/(6)static int hi=100;public static void main(String args) MyClass my=new MyClass();/.上面代码中,(2)是不能通过编译的,因为该表达式型初始器中的变量width没有遵守Java的“读取之前先声明”的原则。变量hi是正确的,值是100,因为hi是类的静态变量,在类实例化之前就已经初始化了。(3)处事编译正常的,同(2)处的区别就是增加了this关键词。值得注意的是,虽然(3)处可以正常编译,但是此时width的值并不是10,而是默认的初始值。(5)处的表达式是合法的,该表达式型初始器会计算为(sq=(height=20),每个MyClass类初始化的时候height都会设置为20.2、 代码块型静态初始器Java语言中可以在类中定义代码块的静态初始器。代码块静态初始器中的代码只会在初始化类的时候初始化一次。注意:代码块型静态初始器不属于任何方法。类可以有多个代码块型初始器,代码块型静态初始器并不是类的成员。关键词this和super不能出现在代码块型静态初始器中。示例代码如下:public class MyClass static /(1)静态初始器sf1=10; /(2)/sf1=if1;/(3)if1没有声明/int a=2*sf1;/(4)sf1还没有声明int b=sf1=20;/(5)可以在赋值左侧作出前向引用int c=MyClass.sf1;/(6)static int sf1=sf2=30;/(7)static int sf2;/(8)int if1=5;/(9)static/(10)静态初始器int d=2*sf1;/(11)int e=sf1=50;/(12)public static void main(String args) System.out.println(MyClass.sf1);System.out.println(MyClass.sf2);上面的代码中,(1)和(10)处就是代码块型静态初始器。(4)处是错误的,因为企图在声明之前访问该变量。(11)处是在声明之后的访问,所以是正确的。(2)、(5)、(7)处是正确的,因为可以在赋值左侧作出前向引用。该程序运行后输出如下:50303、 代码块型实例初始器代码块型实例初始器提供了在对象创建期间初始化变量的能力,这种代码块所起到的作用和对象创建期间的构造函数是一样。一个代码块型实例初始器的示例如下:public class MyClass /(1)初始器sf1=10;/(2)/sf1=if1;/(3)if1没有声明/int a=2*sf1;/(4)sf1还没有声明int b=sf1=20;/(5)可以在赋值左侧作出前向引用int c=this.sf1;/(6) int sf1=sf2=30;/(7) int sf2;/(8)int if1=5;/(9)/(10)初始器int d=2*sf1;/(11)int e=sf1=50;/(12)public static void main(String args) MyClass my=new MyClass();System.out.println(my.sf1);System.out.println(my.sf2);运行结果:5030注意:代码块型实例初始器中可以使用关键词this和super4、 构造对象的初始状态以一个示例来理解如何构造对象的初始状态public class InheritIniOrder public static void main(String args) BBB bb=new BBB();System.out.println(main方法: i=+bb.i);class AAAint i=20;/表达式型变量初始器/构造器public AAA()System.out.println(类AAA的构造器 i=+i);/初始器+i;System.out.println(类AAA的初始器 i=+i);class BBB extends AAAint i=5;BBB()this(3);System.out.println(类BBB的默认构造器 i=+i);BBB(int i)System.out.println(类BBB的带参数的构造器 i=+i);/初始器i=i+100;System.out.println(类BBB的初始器 i=+i);运行该程序,结果如下:类AAA的初始器 i=21类AAA的构造器 i=21类BBB的初始器 i=105类BBB的带参数的构造器 i=3类BBB的默认构造器 i=105main方法: i=105总结:当有继承关系时候,先执行父类的表达式型类字段的初始化,然后执行父类的代码块型静态初始器的初始化,执行父类的代码块型实例初始器。在执行父类的默认构造函数,然后子类的执行顺序也按照这个顺序执行。再看一个例子:java的初始器执行顺序运行下面的代码,会得到什么结果?public class MyClass1 private static String msg(String msg)System.out.println(msg);return msg;static String m=msg(1);m=msg(2);staticm=msg(3);public static void main(String args)Object obj=new MyClass1();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学术论文选题五大忌讳四个原则辑文编译-4027(同名40088)
- 三农产业供应链优化作业指导书
- 怎么样写好汉语言文学毕业
- 天津音乐学院历届(2009年)硕士研究生学位论文选题一
- 在自主游戏中支持幼儿的深度学习-以大班沙水活动为例
- 利用掺杂技术提高OLED性能及白光OLED色度改善的理论研究
- 企业薪酬管理问题研究综述毕业论文文献综述开题报告任务书
- 汉语言文学设计毕业论文
- 导师对研究生论文评语(三)
- 企业员工心理健康状况调查与分析报告
- 设备调试服务合同范本
- 2025化工维修岗位试题及答案
- 精美的邮票(教学设计)-2024-2025学年人教版(2012)美术四年级上册
- 上市公司财务培训课件
- 名词性从句的语法课件 高三英语一轮复习
- 2025浙江省测绘科学技术研究院招聘编外人员12人笔试考试参考试题附答案解析
- 2025广东深圳市龙岗区国资国企系统面向全市集中选聘中层管理人员考试及考察笔试历年常考点试题专练附带答案详解2套试卷
- 2025年研学旅行练习题库含答案
- 2025年兼职书法教师合同协议
- 18种重点危险化学品生产工艺典型反应及安全控制条件
- 新型二次加压供水设备技术方案
评论
0/150
提交评论