静态代码块,计时器Timer 和TimerTask

一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的。

总结:
对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。

注意:子类的构造方法,不管这个构造方法带不带参数,默认的它都会先去寻找父类的不带参数的构造方法。如果父类没有不带参数的构造方法,那么子类必须用supper关键子来调用父类带参数的构造方法,否则编译不能通过。

import java.io.File;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import java.util.logging.Logger;

import org.junit.Test;
import org.quartz.DateBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

import com.rf.quartz.zhoujie.TestJob;
import com.rf.readfile.zhoujie.*;

public class zhoujie {

    /**
     * @param args
     * @throws SchedulerException
     */

    public static void main(String[] args) throws SchedulerException {
        Timer timer=new Timer();
        timer.schedule(new timertasktest(),1000,2000);
    }

}
class timertasktest extends TimerTask{
int i=0;
    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println(i);
        i++;
    }

}

时间: 2024-10-19 03:08:14

静态代码块,计时器Timer 和TimerTask的相关文章

java中静态代码块的用法—— static用法详解

(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用比如main方法就必须是静态的 这是程序入口两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行的. 静态方法(1)在Java里,可以定义一个不需要创建对象的方法,这种方法就

JavaEE初始化时静态代码块加载问题

1.使用java.exe命令运行某个类的时java.exe Person2.创建一个类的对象时Person p=new Person();3.访问类中的静态成员变量(赋值/获取值)System.out.println(Person.className);4.访问了类中的静态成员方法Person.method();5.创建类的子类对象的时候Student s=new Student();6.使用反射方式来强制创建某个类或接口对应的java.lang.Class对象System.out.printl

Java中普通代码块,构造代码块,静态代码块区别及代码示例

//普通代码块:在方法或语句中出现的{}就称为普通代码块.普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--"先出现先执行"public class CodeBlock01{ public static void main(String[] args){ { int x=3; System.out.println("1,普通代码块内的变量x="+x); } int x=1; System.out.println("主方法内的变量x="

静态代码块、构造代码块、构造函数的执行

1 public class Str { 2 3 static { 4 System.out.println("static{1}"); 5 } 6 static { 7 System.out.println("static{2}"); 8 } 9 { 10 System.out.println("{}"); 11 } 12 13 Str() { 14 System.out.println("Str()"); 15 } 16

java普通代码块、静态代码块、默认构造方法的执行顺序

1 package test; 2 3 class Parent{ 4 { 5 System.out.println("父类普通代码块"); 6 } 7 static{ 8 System.out.println("父类静态代码块"); 9 } 10 public Parent(){ 11 System.out.println("父类默认构造代码方法"); 12 } 13 } 14 class Child extends Parent{ 15 {

Java误区: 静态代码块,当把类将被载入到自己主动运行?

JAVA静态代码块会在类被载入时自己主动运行? 非常多Java开发人员的思想,被这个思想深深的轮奸了n遍,传播这个错误思想的博客,在网上一堆,越来越多的人被轮奸. 如:http://blog.csdn.net/leeyu35/article/details/7755304 那么我们程序来证明这句话是错误的: class MyClass1 { static {//静态块 System.out.println("static block "); } } public class Main

[转载] java中静态代码块的用法 static用法详解

(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用比如main方法就必须是静态的 这是程序入口两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行的. 静态方法(1)在Java里,可以定义一个不需要创建对象的方法,这种方法就

静态方法和静态代码块

注意事项: 1.静态代码块不能写this或者对象,因为静态代码块在对象初始化之前执行: 2.静态代码块在构造代码块之前执行: 3.静态代码块用于初始化类,只执行一次: 4.静态方法只能访问静态成员: 执行顺序:静态代码块->构造代码块->构造方法 版权声明:本文为博主原创文章,未经博主允许不得转载.

JAVA之父子类的构造函数、静态代码块等执行顺序

欢迎转载,请附出处: http://blog.csdn.net/as02446418/article/details/47092769 最近在做项目时遇到了Java构造函数,代码块的一些执行顺序方面的知识,随兴做了个实验,毕竟实践出真知嘛.遇到的问题简单说一下就是在子类A继承父类B的时候,如果在代码中 A a = new A(); 这个时候父类和子类的静态代码块和构造函数执行的先后顺序到底是怎么样的呢? 我得出的结论是 父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B