类属性,类方法的设计思想:
- 类属性作为该类各个对象之间共享的变量。在设计类时,分析哪些类属性不因为对象的不同而改变,将这些属性设置为类属性。相应的方法设置为类方法。
- 如果方法与调用者无关,则这样的方法通常被声明为类方法,由于不需要创建对象就可以调用类方法,从而简化了方法的调用。
- 有哪些方法不想因为对象的不同而频繁通过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