多语言展示
当前在线:524今日阅读:138今日分享:34

Java中代码块及其定时器简介

为什么静态方法中不能调用非静态       因为程序运行的时候会先在方法区中加载  .class文件,加载   静态资源,加载类的普通方法(所有的方法都只有一份),加载   静态方法,而普通方法他是属于对象,他刚开始在方法区中是一个   以“睡眠”状态存储在方法区中,当堆中创建了对象,而且该对象   也调用了该方法,那么该方法才会活起来,为什么不能再静态方法   中调用非静态呢?是因为当有静态方法的时候不一定有非静态方法   所以为了规避这种风险,语法上面就给我们定死了。
工具/原料

eclipse

方法/步骤
1

为什么静态方法中不能调用非静态       因为程序运行的时候会先在方法区中加载  .class文件,加载   静态资源,加载类的普通方法(所有的方法都只有一份),加载   静态方法,而普通方法他是属于对象,他刚开始在方法区中是一个   以“睡眠”状态存储在方法区中,当堆中创建了对象,而且该对象   也调用了该方法,那么该方法才会活起来,为什么不能再静态方法   中调用非静态呢?是因为当有静态方法的时候不一定有非静态方法   所以为了规避这种风险,语法上面就给我们定死了。

2

代码块a,构造代码块     {}     在每次创建对象的时候执行一次         b,静态代码块         static{}     在类加载到虚拟机的时候执行一次,不管创建多少对象,也只执行一次;

3

代码块的执行顺序         静态----main----构造代码块----构造方法       其中构造代码块和构造方法在没创建一次对象的时候执行一次       而静态代码块只执行一次,所以静态代码块适合做一些加载资源的代码(加载音频,视频,图像)        重点掌握  静态代码块     执行效率最高,只执行一次。

4

定时器   他可以定时的执行某一段的代码   比如一个需求,每隔1S  控制台输出HelloWorld!      java官方给我们提供了一个定时类   TimerTask,该类在java.util包下面,该类也是一个抽象类   我们可以编写一个类来继承该提供的类,在自己重写定时器的方法。

5

import java.util.TimerTask;public class MyTimerTask extends TimerTask{ @Override public void run() {    System.out.println('HelloWorld!'); } }TimerTask是一个抽象类MyTimerTask继承TimerTask必须继承TimerTask的所有抽象类,鼠标放入MyTimerTask会自动弹出提示导入需要重写的方法

6

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,代表  后面每次执行的间隔时间;

注意事项

匿名内部类

推荐信息