- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
static{}(静态代码块)与{}(非静态代码块)的异同点
HYPERLINK /rgky/archive/2011/03/17/1986907.html 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.);? }//定义一个静态代码块static{System.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 useS
您可能关注的文档
- 任正非为什么坚持华为不上市.doc
- 世界语词汇精编.doc
- 安装承包合同模板.doc
- 个人承包协议空.doc
- 专利国家代码.docx
- Source Insight打开linux内核源代码.doc
- 吊顶班组承包合同.doc
- 全部的专利文献国家代码.doc
- 视神经脊髓炎病人的护理查房.doc
- 工程类承包合同(通用模板).doc
- 2025年春新北师大版八年级物理下册全册课件.pptx
- 2025年春新北师大版八年级物理下册全册教学课件.pptx
- 2025年秋季新北师大版八年级上册物理全册教学课件.pptx
- 2025年秋季新人教版九年级上册化学全册课件.pptx
- 2025年新人教版八年级上册物理全册课件.pptx
- 2025年秋季新人教版九年级上册化学全册教学课件(新版教材).pptx
- 新人教版七年级上册英语全册课件(2025年新版教材).pptx
- 锂离子电池前驱体磷酸铁合成方法研究现状及展望.docx
- 2024年东盟石油和天然气更新报告(英文版)-东盟.docx
- DB3209_T 1207.2-2022 建设工程档案管理 第二部分:房屋建筑工程文件归档和档案移交范围.docx
文档评论(0)