java中的关键字static(静态变量)和final定义常量

时间:2023-02-06 00:41:13
package point;

class Point {

int x = 0;
int y = 0;
static int z = 100; // 定义静态变量z,类变量
static final double PI = 3.1415926;// final定义常量,它的值在运行时不能被改变

Point(
int a, int b) {
//PI=3.1415926;
/*
* 当使用静态常量的时候,不能在构造函数中初始化, 因为静态时,常量已经变成类的常量了
*/
x
= a;
y
= b;
}

Point() {
this(1, 1); // 必须作为构造函数的第一条语句
}

static void output() {
System.out.println(
"hello,output() called");
// System.out.println(x);//此时尚未给x,y分配内存空间,
/*
* Point2.java:16: non-static variable x cannot be referenced from a
* static context System.out.println(x); ^ 1 error
*/
System.out.println(z);
}


@SuppressWarnings(
"static-access")
public static void main(String[] args) {

Point.output();
/*
* 当声明output为静态方法(static)时,直接使用类名Point, 来调用output()方法,
* 因为这样一个静态方法只属于类本身, 而不属于某个对象,把这种方法称为类方法 而对于非静态方法,称之为实例方法,即对象的方法
*/
Point pt2
= new Point();
pt2.output();
// 当然也可以使用类的实例,即对象pt2,使用pt2来调用静态方法
Point pt3 = new Point();
Point pt4
= new Point();
pt3.z
= 5;
System.out.println(pt3.z);
// 显示的是5,因为z是静态变量,类的变量
pt4.z = 1000;
System.out.println(pt3.z);
// 显示的是1000,因为z是静态变量,类的变量
System.out.println(pt4.z);// 48句赋予了z新的值

}
}