static:静态的,可以声明 字段,方法,和代码块[称为静态代码块],这样在一个 这个类的实例将可以共享他们[共产社会主义好]

  并且该类也可以直接使用它,无须实例化。和final一起使用时,被声明的字段为常量,必须初始化,且不能被修改,被声明的

  方法不能被重写。

package com.m01.teststatic;

import java.util.HashMap;
import java.util.Map;

public class Person {

    public Map map=null;
    public String name;
    public static int velt;
    public  static final int trunk=10;//常量,不可修改
    //trunk=12;
    public  static void eat(){
        Person p=new Person();
        System.out.println(p.velt);
    }
    public final static void drink(){
        Person p=new Person();
        System.out.println(p.velt);
    }
    public Person(){
        System.out.println("无参构造器");
    }
    public Person(int velt){
        this.velt=velt;
        System.out.println("有参构造器");
    }
    static{
        //map=new HashMap();
        Map map=new HashMap();
        System.out.println("静态代码块在实例化对象之前执行"
                + "可以创建对象,但是只能操作本类中的静态变量");
        velt=1;
        System.out.println("velt="+velt);
    }
}

测试

package com.m01.teststatic;
public class TestStatic {
    @org.junit.Test
    public void test(){
        Person p=new Person();
        System.out.println(p.velt);
        System.out.println(Person.velt);
        Person.velt=1;
        System.out.println(p.velt);
        System.out.println(Person.velt);
    }
    @org.junit.Test
    public void teststaticMethod(){
        Person p=new Person();
        p.eat();
        Person.eat();
    }
    @org.junit.Test
    public void teststaticBlock(){
        Person p=new Person(3);
        System.out.println(p.velt);
        System.out.println(Person.velt);
    }
    @org.junit.Test
    public void testConstant(){
        Person p=new Person(3);
        p.drink();
        Person.drink();
        System.out.println(p.trunk);
        System.out.println(Person.trunk);
    }
}

 

 posted on 2017-02-21 23:45  夏末秋萍  阅读(188)  评论(0编辑  收藏  举报