java关键字总结

https://www.cnblogs.com/AloneZ/p/java1.html

Static:

  1.为什么需要static关键字:

    如果只想要为某一特定域分配单一存储空间,而不管需要创建多少对象。

    希望没有创建这个类的对象时,也能调用这个方法或变量。

  关注类加载顺序

  2.static修饰变量:类变量

     static修饰方法:类方法

   static修饰类:static关键字在不能修饰普通类,只能修饰内部类。static修饰的内部类和普通类的区别:

 1 public class StaticClassTest {
 2     public static void main(String[] args) {
 3         //静态内部类可以直接new
 4         StaticInner si=new StaticInner();
 5         //非静态内部类需创建一个父类的实例,方能new
 6         StaticClassTest sct=new StaticClassTest();
 7         Inner i=sct.new Inner();
 8     }
 9     class Inner{
10          
11     }
12     static class StaticInner{
13          
14     }
15  
16 }
View Code

instanceOf:

  进行类型检查:检查规则,如果该类是该类,或其父类则为true。

final:

 1.为什么需要final关键字:

    一个永不改变的编译时常量。todo:编译时常量

    一个运行时被初始化的值,不希望被改变。

  2.如果使用编译时不能确定的数值来初始化final修饰的的变量,则为运行时常量。

       一般即用static又用final修饰的域用大写字母表示。

  final修饰类,数组表明的是引用不可变,而不是类不可变。

     3.空白final:声明为fianl但又没给定初值的域,但是编译器要确保final在使用前必须要初始化。

           优点:对一个类的不同对象定制final

        方法:在构造器中进行赋值。

     4.final修饰方法参数:方法参数所指向的引用或值不可改变。主要用来向匿名内部类传递数据。todo:匿名内部类。

     5.final修饰方法:想要明确禁止方法被覆盖(被继承时被重写),就声明成final吧!

         private和fianl关键字,访问权限为private的方法默认情况下就是final的。

     6.final类:明确禁止类被继承。比如说String.

   代码分析:学习static域的初始化顺序。

 1 //: reusing/Beetle.java
 2 // The full process of initialization.
 3 import static net.mindview.util.Print.*;
 4 
 5 class Insect {
 6   private int i = 9;
 7   protected int j;
 8   Insect() {
 9     print("i = " + i + ", j = " + j);
10     j = 39;
11   }
12   private static int x1 =
13     printInit("static Insect.x1 initialized");
14   static int printInit(String s) {
15     print(s);
16     return 47;
17   }
18 }
19 
20 public class Beetle extends Insect {
21   private int k = printInit("Beetle.k initialized");
22   public Beetle() {
23     print("k = " + k);
24     print("j = " + j);
25   }
26   private static int x2 =
27     printInit("static Beetle.x2 initialized");
28   public static void main(String[] args) {
29     print("Beetle constructor");
30     Beetle b = new Beetle();
31   }
32 } /* Output:
33 static Insect.x1 initialized
34 static Beetle.x2 initialized
35 Beetle constructor
36 i = 9, j = 0
37 Beetle.k initialized
38 k = 47
39 j = 39
40 *///:~
View Code

 

default:http://blog.csdn.net/MOVIE14/article/details/76559479

Abstract:http://blog.csdn.net/Mithrandir_One/article/details/53404431

 

 

     

 

posted @ 2018-01-24 16:29  rose^Chen  阅读(171)  评论(0编辑  收藏  举报