/*static 变量:声明为static的变量本质上是全局变量,它不仅可以通过声明对象来调用,还可以
* 直接用类名来调用!
*
*static 方法:用法同上
* 限制:1.它们只能调用static方法
* 2.它们只能调用static数据
* 3.它们没有this引用
*
*static 代码块:static代码块在类第一次被夹在时执行。因此,它是在使用类之前执行的
* (当然也在main方法前面执行)
*
*心得:static变量和方法同样可以被非static变量调用,但它们不可以调用非static方法或变量
* 好比static是公共器材,大家都可以调用它们,但是公共器材如果想
* 使用非公共器材,则必须new!
* */
public class P192static {
// 这里主要演示下static代码块
/**
* @param args
*/
static double num1;
static double num2;
double num3 = 0;// 测试
static {
System.out.println("现在开始演示static代码块");
num1 = Math.sqrt(2);// 注意这里Math类的sqrt()方法是static 方法,所以只能给同样是
num2 = Math.sqrt(3);// static的变量赋值
}
public static void main(String[] args) {
// TODO Auto-generated method stub
P192static a = new P192static();
a.show("正在演示");
// static变量用类调用和用对象调用都可以,并且结果相同
System.out.println(P192static.num1);
System.out.println(a.num1);
System.out.println(P192static.num2);
System.out.println(a.num2);
// static方法用类调用和对象调用同样可以,并且结果相同
P192static.show1();
a.show1();
}
void show(String msg) {
System.out.println(num1);
System.out.println(msg);
show1();
}
static void show1() {
System.out.println("测试类");
// System.out.println(num3);
}
}