您的位置:首页 > 职场人生

黑马程序员:final、static用法总结

2014-07-10 20:30 344 查看
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- 

一、静态:static

用法:是一个修饰符,用于修饰成员(成员变量或成员函数)。当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用。格式:类名.静态成员。

 

static特点:

1、随着类的加载而加载。

2、被所有对象所共享。

3、优先于对象存在。

4、可以直接被类名所调用。

 

注意事项:

1、静态方法只能访问静态成员。

2、静态方法中不可以定义this,super关键字。

3、主函数是静态的。

class Simple {

static void go() {

System.out.println("Welcome");

}

}

public class Cal {

public static void main(String[] args) {

Simple.go();

}

}


二、final

1.final变量:

      当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中。这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值。

     当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。

     另外方法中的内部类在用到方法中的参变量时,此参变也必须声明为final才可使用

2.final方法

     如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。

使用final方法的原因有二:

    第一、把方法锁定,防止任何继承类修改它的意义和实现。

    第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。

3.final类

     final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。

class Value {
int i = 1;
}

public class FinalData {
// Can be compile-time constants
final int i1 = 9;
static final int I2 = 99;
// Typical public constant:
public static final int I3 = 39;
// Cannot be compile-time constants:
final int i4 = (int)(Math.random()*20);
static final int i5 = (int)(Math.random()*20);

Value v1 = new Value();
final Value v2 = new Value();
static final Value v3 = new Value();
//! final Value v4; // Pre-Java 1.1 Error:
// no initializer
// Arrays:
final int[] a = { 1, 2, 3, 4, 5, 6 };

public void print(String id) {
System.out.println(
id + ": " + "i4 = " + i4 +
", i5 = " + i5);
}
public static void main(String[] args) {
FinalData fd1 = new FinalData();
! fd1.i1++;     fd1.v2.i++;     fd1.v1 = new Value();     for(int i = 0; i < fd1.a.length; i++)
fd1.a[i]++; // Object isn't constant!
fd1.print("fd1");
System.out.println("Creating new FinalData");
FinalData fd2 = new FinalData();
fd1.print("fd1");
fd2.print("fd2");
}
}


 

----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java