




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
static(静态代码块)与(非静态代码块)的异同点 相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,一般在代码块中对一些static变量进行赋值。不同点:静态代码块在非静态代码块之前执行(静态代码块非静态代码块构造方法)。静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行。例:/普通类public class PuTong public PuTong() System.out.print(默认构造方法!-); /非静态代码块 System.out.print(非静态代码块!-); /静态代码块 static System.out.print(静态代码块!-); public static void test() System.out.println(普通方法中的代码块!); /测试类public class TestClass /* * 区别两次new静态与非静态代码块执行情况 */ public static void main(String args) PuTong c1 = new PuTong(); c1.test(); PuTong c2 = new PuTong(); c2.test(); /*运行输出结果是:静态代码块!-非静态代码块!-默认构造方法!-普通方法中的代码块!非静态代码块!-默认构造方法!-普通方法中的代码块!*/一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的.两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行的.作用:静态代码块可用来初始化一些项目最常用的变量或对象;静态方法可用作不创建对象也可能需要执行的代码.3.7.3 静态代码块在类中,可以将某一块代码声明为静态的,这样的程序块叫静态初始化段。静态代码块的一般形式如下:static 语句序列静态代码块只能定义在类里面,它独立于任何方法,不能定义在方法里面。静态代码块里面的变量都是局部变量,只在本块内有效。静态代码块会在类被加载时自动执行,而无论加载者是JVM还是其他的类。一个类中允许定义多个静态代码块,执行的顺序根据定义的顺序进行。静态代码块只能访问类的静态成员,而不允许访问实例成员。【例3.25】 静态代码块运行示例1。/-文件名staticBlock.java,程序编号3.38-public class staticBlock/定义一个普通的main()方法public static void main(String args)System.out.println(This is main method.); /定义一个静态代码块staticSystem.out.println(This is static block.);int stVar = 0; /这是一个局部变量,只在本块内有效编译通过后,用java命令加载本程序,会得到如下输出: This is static block.This is main method.从以上输出结果中可以看出,静态代码块甚至在main方法之前就被执行。在main()方法中可以完成的任务在静态代码块中都可以完成。但是二者在执行上仍然有一些区别,请看下例。【例3.26】 静态代码块和main()方法的区别。这里仍然使用例3.25中的staticBlock类,然后新定义一个类来使用它。/-文件名useStaticBlock.java,程序编号3.39-public class useStaticBolckpublic static void main(String args)new staticBlock(); /创建一个staticBlock的对象本例其实可以概括成一句话:静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。下面这个程序有个错误,请读者仔细查看。public class hasErrorint insVar = 100;public static void main(String args)System.out.println(insVar = + insVar);本程序没有像以前的程序那样,在创建对象时使用一个变量来接收对象,因为这个程序在后面并不需要用到这个变量。程序的输出如下:This is static block.这一次,只执行了静态代码块,main()方法在这种情况下是不会被执行的。最后来写一个复杂一点的静态代码块的例子,它综合体现了静态代码块的使用方法,请读者注意注释说明。【例3.27】 静态代码块使用示例2。/-文件名staticBlock.java,程序编号3.40-public class staticBlockstatic int stMember = 100;/定义静态成员变量public static void main(String args)System.out.println(This is main method.);/第一个静态代码块staticSystem.out.println(This is first static block.);stMember = 200;/访问静态成员变量staticBlock oa = new staticBlock();/创建对象System.out.println(stMember = + oa.stMember);statFun();/调用静态方法/定义一个静态方法static void statFun()System.out.println(This is a static method.); /第二个静态代码块staticSystem.out.println(This is sec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025昆明聂耳交响乐团编外人员招聘(1人)考前自测高频考点模拟试题及参考答案详解一套
- 2025年滇西科技师范学院公开招聘博士人员(8人)考前自测高频考点模拟试题含答案详解
- 2025福建三明市教育局华东师范大学附属三明中学招聘紧缺急需专业工作人员18人(省外高校专场)考前自测高频考点模拟试题附答案详解(突破训练)
- 2025北京清华附中上庄学校招聘模拟试卷及参考答案详解
- 2025年中国华电集团有限公司宁夏分公司所属基层单位高校毕业生招聘笔试题库历年考点版附带答案详解
- 2025北京市大兴区教育委员会所属事业单位第二批招聘教师251人考前自测高频考点模拟试题及答案详解(新)
- 2025湖北恩施市福牛物业有限公司补招恩施市金满园农业发展有限公司工作人员1人考前自测高频考点模拟试题及答案详解(网校专用)
- 2025福建厦门市翔安招商集团有限公司(第一期)招聘4人考前自测高频考点模拟试题及参考答案详解
- 2025年福建省福州市少年儿童图书馆招聘3人模拟试卷参考答案详解
- 2025山东土地资本投资集团有限公司春季社会招聘5人笔试题库历年考点版附带答案详解
- 文化遗产数字化保护与文化遗产数字化保护的公众认知与接受度研究报告001
- 部编版(2024)七年级上册道德与法治第一单元 少年有梦 单元测试卷(含答案)
- 重大危险源安全培训
- 中职历史说课课件
- 广西2025年初中学业水平考试英语真题(含答案及听力音频听力原文)
- 锻造工理论知识考试题(附答案)
- 妇科手术麻醉出科
- 公司人员来访管理制度
- 2025至2030MCU行业市场发展分析及竞争形势与投资机会报告
- 2025年植物保护专业考试试题及答案
- 防水工程质量保证书
评论
0/150
提交评论