重温面向对象OOP——static关键字
-
1. 静态的变量
对一个类的静态变量A来说,实例化出的每一个对象,都有自己的A变量
public class Yuan(){
private static final double PI =3.1415926;
...
}
-该类实例化出A、B对象的时候,两个对象各自都拥有自己PI变量
//做为静态的变量,是将类名作为它的名称空间,可以这样
//取到静态变量
System.out.printfLn(Yuan.PI);
- Java程序设计领域中,养成的良好习惯,在用类名+”.”来访问它的静态成员,这样我们一看就知道这个变量是static成员,我们经常用到的System.out……对,o就是说System拥有静态static成员out,同理,看其他类名.静态变量。
2.如果有些动作想在位码加载后执行,则可以定义static区块——这里需要说明一下,什么事位码,java的的编译过程是:
JavaCode.java文件—>JavaCode.class文件—>通过JVM(java虚拟机)将class文件加载进入内存—>二进制Byte位码(1011001…)机器语言。
我们继续,位码加载后执行,说明Java文件加载进虚拟机变成二进制码后,默认就会执行在内存中的静态代码块(static区块)
public class Ball(){
static{
System.out.printfLn("这是一个static区块");
}
}
3.偷懒的程序员
在JDK1.5之后,新增了import static的语法,这样我们在使用常用的System.out.printfLn();的时候可以少打几个字。例如:
package cc.openhome;
import java.until.Scanner;
import static java.lang.System.out;
import static java.lang.System.in;
public class Test(){
public static void main(String[] args){
Scanner scanner = new Scanner(in);
out.print("请输入你的姓名");
out.print("%s 你好!",scanner.nextLine());
}
}
-
4.导入架包时的static
- 看到这个标题,你可能会说,我在导入架包的时候没有用到static啊,我们来看。
import static java.lang.System.*
//如果一个类中有多个static成员想摇偷懒,这个语法是正确的,这样在写System.out...和System.in...等引用
//时,就直接out.后者in.形式来引用了,是不是很偷懒。其实懂得偷懒的程序员才是优秀的程序员,因为他懂得将重
//复代码进行复用,单独抽取出来进行封装等一系列优化处理。