黑马程序员-java关键字static详解

黑马程序员-java关键字static详解

ID:32602656

大小:87.88 KB

页数:10页

时间:2019-02-13

黑马程序员-java关键字static详解_第1页
黑马程序员-java关键字static详解_第2页
黑马程序员-java关键字static详解_第3页
黑马程序员-java关键字static详解_第4页
黑马程序员-java关键字static详解_第5页
资源描述:

《黑马程序员-java关键字static详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、static表示“全局”或者“静态”的意思,是一个修饰符,用于修饰成员变量和成员方法,也可以形成静态代码块。static修饰的成员变量和成员方法习惯上称为静态变量和静态方法。被static修饰的成员变量和成员方法独立于该类的任何对象。只要这个类被加载,java虚拟机就能根据类名在方法区内找到它们。因此,引出了下列static的特点。static的特点:1、随着类的加载而加载。也就是说,静态会随看类的消失而消失。说明它的牛命周期最长。2>静态成员优先于对象存在,可以在任何对象创建前访问它。3、不依赖类特定的对象,被所有对象所共享。4、静态成员多一个调用方式,除了可以被对彖调

2、用(不推荐),还可以直接被类名调用。格式:类名.静态成员注意:用public修饰的static成员本质上是全局变量和全局方法。用private修饰static成员时,该成员可以被该类屮其他的静态方法调用,或者出现在该类的静态代码块屮,但不可以在其他类屮通过类名直接调用。下而分别介绍静态变量、静态方法和静态代码块。静态变量被static修饰的成员变量,叫做静态变量或类变量;未被static修饰的成员变量,叫做实例变量。两者的区别:1)静态变量在内存中只有一个拷贝(节省内存),所有对象共享这个拷贝。JVM只为静态变虽分配一次内存,在加载类的过程中完成i挣态变虽的内存分配;实例

3、变量,每创建一个对象,就会为实例变量分配一次内存。实例变量可以在内存中有多个拷贝,互不影响(灵活)。2)静态变量随着类的加载而存在于方法区中;实例变量随着对象的建立而存在于堆内存中。3)静态变量生命周期最长,随着类的消失才消失;实例变量的生命周期随着对象的消失而消失。4)静态变量既可以通过类名直接访问(方便),也可以通过对象访问(不推荐);实例变量只能通过对象访问。2、静态方法静态方法既可以肓接通过类名调用,也可以通过对象调用;因为静态成员先于对象存在,所以静态方法屮不可以定义thissuper关键字;静态方法只能访问静态成员,非静态方法既可以访问静态成员也可以访问非静

4、态成员;因为静态方法独立于任何对象,所以静态方法必须被实现,而不能是抽象的。3、静态代码块i挣态代码块是类中独立于类成员的static语句块,可以冇多个,位置可以随便放,但不在任何方法体内。JVM加载类时会按照它们在类中出现的先后顺序依次执行这些静态代码块,每个代码块只加载一次。如下面的例子所示。例1:(java]viewplaincopyCI.classStaticCode2・{3.static4・{5.System.out.println("StaticCode");6・}7.}8.classStaticCodeDemo9・{10・static〃静态代码块先于main

5、方法执行II.{12.System・out.printlnC'StaticCodeDemol");13.}14.publicstaticvoidmain(String[]args)15.{16.newStaticCode();17.newStaticCode();//的态代码块只加载一次。18.System.out.printIn("Over!");19.}20・static〃静态代码块可以放在任意位置,JVM按照位置的先后顺序执行它们。21.{22.System.out・printIn("StaticCodeDemo2");23.}24.}输出结果:java]viewp

6、laincopy1.StaticCodeDemol2•StaticCodeDemo2B-StaticCode3.Over!初始化时的优先顺序:静态代码块〉构造代码块〉构造函数;静态代码块内不能访问非静态成员,构造代码块可以。4、static与final一起用我们先來了解一下final的作用。final:作为一个修饰符,有“终态的”、“无法改变”的含义。它可以修饰非抽象类、非抽象成员方法和变量。1、被final修饰的类不可以被继承。因此final类的成员方法不会被覆盖。设计类时,如果该类不需要了类,类的实现细节不允许改变,并F•确信该类不会再被扩展,则可设计为final类。

7、2、被final修饰的方法不可以被复写。使用final方法的原因冇二:1)把方法锁定,防止任何继承类修改它的意义和实现;2)高效。编译器在遇到调用final方法时会转入内嵌机制,大大提高执行效率。3、被final修饰的变量是一个常量,只能赋值一次且一旦给定就不能改变。而且必须被赋值后才能使用。可以在定义时赋值,也可在构造方法中赋值(只要在构造方法结束前给赋值即可)。final既可以修饰成员变量,也可以修饰局部变量。4、final不能用于修饰构造方法。5、父类的private成员方法是不能被子类方法覆盖的,因此它其实默认是fin

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。