package com.xy.pf.test.xiti;
//关键字static
/*1.静态方法和静态变量是属于某一个类,而不属于类的对象
2.静态方法和静态变量的引用直接通过类名调用
3.在静态方法中不能调用非静态的方法和引用非静态的成员变量
反之,则可以
4.可以用类的对象obj来调用静态的方法method(),
如obj.method();*/
//常量的定义
/*1.使用关键字final定义常量,如:
final double PI=3.1415926;
2.作为一种约定,在定义常量时,通常采用大写形式
3.final常量一般在声明的同时赋初值,也可以在构造函数中赋初值
4.为了节省内存空间,我们常将变量声明为静态的(static)
*/
public class staticfinal {
int x,y;
static int z=100;//定义静态变量z,类变量
static final double PI=3.1415926;//final定义常量,它的值在运行时不能被改变
staticfinal(int a,int b){
//PI=3.1415926;
/*当使用静态常量的时候,不能在构造函数中初始化,
因为静态时,常量已经变成类的常量了*/
x=a;
y=b;
}
staticfinal(){
this(2,3);//必须作为构造函数的第一条语句
}
static void output(){
System.out.println("hello,output() called");
System.out.println(z);
}
/**
* @param args
*/
public static void main(String[] args) {
staticfinal.output();
/*当声明output为静态方法(static)时,直接使用类名Point2,
来调用output()方法,
因为这样一个静态方法只属于类本身,
而不属于某个对象,把这种方法称为类方法
而对于非静态方法,称之为实例方法,即对象的方法*/
staticfinal pt2=new staticfinal();
pt2.output();
System.out.println(pt2.x);
System.out.println(pt2.y);
//当然也可以使用类的实例,即对象pt2,使用pt2来调用静态方法
staticfinal pt3=new staticfinal();
staticfinal pt4=new staticfinal();
pt3.z=5;
pt4.z=1000;
System.out.println(pt3.z);//显示的是1000,因为z是静态变量,类的变量
System.out.println(pt4.z);//48句赋予了z新的值
staticfinal.output();
}
}