eclipse
为什么静态方法中不能调用非静态 因为程序运行的时候会先在方法区中加载 .class文件,加载 静态资源,加载类的普通方法(所有的方法都只有一份),加载 静态方法,而普通方法他是属于对象,他刚开始在方法区中是一个 以“睡眠”状态存储在方法区中,当堆中创建了对象,而且该对象 也调用了该方法,那么该方法才会活起来,为什么不能再静态方法 中调用非静态呢?是因为当有静态方法的时候不一定有非静态方法 所以为了规避这种风险,语法上面就给我们定死了。
代码块a,构造代码块 {} 在每次创建对象的时候执行一次 b,静态代码块 static{} 在类加载到虚拟机的时候执行一次,不管创建多少对象,也只执行一次;
代码块的执行顺序 静态----main----构造代码块----构造方法 其中构造代码块和构造方法在没创建一次对象的时候执行一次 而静态代码块只执行一次,所以静态代码块适合做一些加载资源的代码(加载音频,视频,图像) 重点掌握 静态代码块 执行效率最高,只执行一次。
定时器 他可以定时的执行某一段的代码 比如一个需求,每隔1S 控制台输出HelloWorld! java官方给我们提供了一个定时类 TimerTask,该类在java.util包下面,该类也是一个抽象类 我们可以编写一个类来继承该提供的类,在自己重写定时器的方法。
import java.util.TimerTask;public class MyTimerTask extends TimerTask{ @Override public void run() { System.out.println('HelloWorld!'); } }TimerTask是一个抽象类MyTimerTask继承TimerTask必须继承TimerTask的所有抽象类,鼠标放入MyTimerTask会自动弹出提示导入需要重写的方法
import java.util.Timer;public class Test1 { public static void main(String[] args) { Timer t=new Timer(); MyTimerTask task=new MyTimerTask(); t.schedule(task,1000,1000); } }Timer t=new Timer();MyTimerTask task=new MyTimerTask(); t.schedule(task,5000,1000);直接创建一个对象,task 定时执行的内容5000,代表 第一次执行的时间(毫秒)1000,代表 后面每次执行的间隔时间;
匿名内部类