static,final关键字理解

一、关于Static关键字

  [1]static修饰的方法,变量不需要创建对象便可直接调用;

 1 package com.zyy.servlet;
 2 
 3 public class ServletTest {
 4 
 5     public static void main(String[] args) {
 6         System.out.println(Test.name); //直接调用static修饰的name属性
 7         Test.getName(); //直接调用static修饰的getName()方法
 8     }
 9 
10 }
11 
12 class Test {
13     public static String name = "静态变量";
14     
15     public static void getName () {
16         System.out.println("静态方法");
17     }
18 }

  [2]静态方法中不允许调用非静态成员;

    有Static修饰的方法跟变量在初次加载时就存在于内存中了,而非静态成员这时候还没有被创建,存在的东西去调用不存在的东西当然会出错。

  [3]static代码块

    static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

    static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。因此很多时候将只需要进行一次的初始化操作放在静态代码块中;

    static块的执行顺序优先于"构造块""构造方法";

 1 package com.zyy.servlet;
 2 
 3 public class ServletTest {
 4     static {
 5         System.out.println("我是静态代码块");
 6     }
 7     
 8     {
 9         System.out.println("我是构造块");
10     }
11     
12     public ServletTest () {
13         System.out.println("我是构造方法");
14     }
15     
16     public static void main(String[] args) {
17         new ServletTest();
18         new ServletTest();
19         
20         /*打印结果:
21             我是静态代码块(只会被加载一次)
22             我是构造块
23             我是构造方法
24             
25             我是构造块
26             我是构造方法
27         */
28     }
29 
30 }

  [4]值得注意的是static对象通常不会被GC回收;

二、关于final关键字

  关于final关键字只需要掌握以下几点便可:

  [1]final修饰变量,该变量初次初始化后无法被修改;

  [2]final修饰方法,该方法无法被重写;

  [3]final修饰类,该类无法被继承;

 

posted @ 2017-11-09 15:50  AudreyHepburn  阅读(132)  评论(0编辑  收藏  举报