静态变量和静态方法
今日份学习:静态变量和静态方法。
由static修饰的变量和方法被称为静态变量和静态方法。
被声明为static的变量和方法被称为静态成员。静态成员属于类所有,区别于个别对象,可以在本类或其他类使用类名和“.”运算符调用静态成员。
【例】创建并调用静态属性和静态变量
public class StaticDemo {
static double Pl=3.1415;
public static void method() {
System.out.println("这是静态方法");
}
public static void main(String[] args) {
System.out.println(StaticDemo.Pl);
StaticDemo.method();
}
}
结果为:
(虽然静态成员也可以使用“对象.静态成员”的形式进行调用,但通常不建议用这样的形式,因为这样容易混淆静态成员和非静态成员。)
静态变量与静态使用方法的作用通常是为了提供共享数据或方法。尽管使用这种方式调用静态成员比较方便,但静态成员同样遵循着public, private和protected修饰符的约束。
如果在执行类时,希望先执行类的初始化动作,可以使用static定义一个静态区域,这块区域被称为静态代码块。当类文件被执行时,会首先执行static块中的程序,并且只会执行一次。静态代码块的语法如下:
Public class example{
static{
… //可以在这里写初始化的代码
}
}
(在静态方法中不可以使用this关键字。
在静态方法中不可以直接调用非静态方法。
局部变量不可以使用static关键字声明。
主方法必须用static声明。
只有内部类可以使用static关键字声明。)
【例】统计顾客总人数
public class Cust {
static int count=0;
String name;
public Cust(String name) {
this.name=name;
count++;
}
public static void main(String[] args) {
Cust c1=new Cust("李一");
System.out.println("我是第"+Cust.count+"名顾客,我叫"+c1.name);
Cust c2=new Cust("李二");
System.out.println("我是第"+Cust.count+"名顾客,我叫"+c2.name);
Cust c3=new Cust("李三");
System.out.println("我是第"+Cust.count+"名顾客,我叫"+c3.name);
Cust c4=new Cust("李四");
System.out.println("我是第"+Cust.count+"名顾客,我叫"+c4.name);
}
}
结果如下: