如果下面第一个代码你完全可以看懂,那么表明你已经完全掌握了static的使用方法啦
看一下关于static调用的一些方法
这个图就是静态方法和实例方法之间的调用关系
示例一、主要是静态方法与实例方法之间的调用关系
package com.bjpowernode.javase.day09.test003;
public class Test {
//没有static的变量
int i = 10;
//带有static的方法
public static void doSome(){
System.out.println("do some!");
};
//没有static的方法
public void doOther(){
System.out.println("do other!");
}
//带有static的方法
public static void method1(){ //没有this指针
//调用doSome
//完整方式的调用
Test.doSome();
//省略方式的调用
doSome();
//调用doOther
//完整方式的调用
Test dO = new Test();
dO.doOther();
//访问i
//完整方式访问
System.out.println( dO .i);
}
public void method2(){
//调用doSome
//完整方式的调用
Test.doSome();
//省略方式的调用
doSome();//??当前对象的 相当于this.doSome,而且this可以省略
//调用doOther
//完整方式的调用
this.doOther();
//省略方式的调用
doOther();
//访问i
//完整方式访问
System.out.println(this.i);
//省略方式访问
System.out.println(i);
}
//主方法
public static void main(String[] args) { //没有this指针
//要求在这里编写程序调用method1
//要求完整方法调用
Test.method1();
//要求省略方法调用
method1();
//要求在这里编写程序调用method2
//要求完整方法调用
Test m2 = new Test();
m2.method2();
//要求省略方法调用
}
}
示例二、带有static的方法,还可以采用“引用点”的方式访问??
答案是的,但是即使采用引用的方式访问,实际上执行的时候,和引用指向的对象无关
请看下面这个例子:
package com.bjpowernode.javase.day09.test003;
/**
* 什么时候程序在运行的时候出现空指针异常呢?
* 空引用访问实例相关的数据,因为实例变量的数据就是对象相关的数据
*/
public class TestEnd {
public static void main(String[] args) {
Test.doSome();
doSome();
Test t = new Test();
t.doSome();
//引用是空
t = null;
//带有static的方法既可以采用类名点的方式访问,也可以采用引用点的方式访问
//但是即使采用引用的方式访问,实际上执行的时候,和引用指向的对象无关
//在myeclipse中开发的时候,使用引用的方式访问带有static的方法,程序会出现警告
t.doSome();//这里不会出现空指针异常
}
//带有static的方法,需要使用“类名.”的方式访问
public static void doSome(){
System.out.println("do Some!");
}
}
可以看出,带有static的方法既可以采用类名点的方式访问,也可以采用引用点的方式访问
,但是即使采用引用的方式访问,实际上执行的时候,和引用指向的对象无关