网站大量收购闲置独家精品文档,联系QQ:2885784924

static{}(静态代码块)与{}(非静态代码块)的异同点.docx

static{}(静态代码块)与{}(非静态代码块)的异同点.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档