类属性,类方法的设计思想:

  • 类属性作为该类各个对象之间共享的变量。在设计类时,分析哪些类属性不因为对象的不同而改变,将这些属性设置为类属性。相应的方法设置为类方法。
  • 如果方法与调用者无关,则这样的方法通常被声明为类方法,由于不需要创建对象就可以调用类方法,从而简化了方法的调用。
  • 有哪些方法不想因为对象的不同而频繁通过new对象方式去调用方法,方法就写为static。
package day08;
/**
 * 关键字 static
 * 使用范围:在java类中,可用static修饰属性,方法,代码块,内部类
 *
 * 被修饰后的成员具备以下特点:
 * 随着类的加载而加载------>类加载之后,静态的方法或者属性就能用了
 * 优先于对象存在------>不用new就能用
 * 修饰的成员,被所有的对象共享
 * 访问权限允许时,可不创建对象,直接被类调用
 * 因为不需要实例就可以访问static方法,因此static方法内部不能有this(也不能有super)
 */
public class Chinese {
    static String country;//类变量,不用实例化就可直接通过(类名.属性名)使用,被所有这个类的实例化对象所共享。也可以叫做静态变量。
    String name;//实例变量,只有实例化才能使用,不能共用
    String sex;//实例变量,只有实例化才能使用,不能共用
    public static int count=0;
    public Chinese(){
        Chinese.count = count+1;
    }
    public static void showCount(){
        System.out.println("打印了"+Chinese.count+"Chinese.count");
    }

    public static void test(){
        System.out.println("这是一个静态方法");
    }
    //抽象为工具类
    public static boolean siEmpyy(String s){
        boolean flag = false;
        if(s != null && !s.equals("")){
            flag = true;
        }
        return flag;
    }
}
package day08;

public class Text {
    public static void main(String[] args) {
//        Chinese c = new Chinese();
//        Chinese.country ="中国";
//        //c.country = "中国";
//        c.name = "zhangsan";
//        c.sex = "nan";
//        String s = null;
////        每次有一个新人物,就必须new一个新对象Chinese,
////        有没有办法,让所有对象都是用相同国籍。static!
//        System.out.println(Chinese.country);
//        System.out.println(Chinese.siEmpyy(s));
        Chinese c1 = new Chinese();
        System.out.println(Chinese.count);
        Chinese c2 = new Chinese();
        System.out.println(Chinese.count);
        Chinese c3 = new Chinese();
        System.out.println(Chinese.count);
        Chinese c4 = new Chinese();
        System.out.println(Chinese.count);
        Chinese c5 = new Chinese();
        System.out.println(Chinese.count);
        Chinese.showCount();

    }
}
中国
false
2
3
4
5
6
打印了6Chinese.count