Java虚拟机运行Java程序时,会加载类到内存(类并没有被实例化),此时因为类没有被实例化,还不能访问类的成员变量和成员方法,但在类中声明的静态变量和静态方法是可以访问的,因为静态变量和静态方法在类加载时就完成了内存的分配。
在类中声明静态变量和静态方法,需要使用static关键字,被static关键字修饰的变量和方法称为静态成员。
声明类静态变量的语法如下:
static datatype variable;
其中,static是静态关键字,datatype是数据类型,variable是变量名称。
声明类静态方法的语法如下:
static datatype method();
其中,static是静态关键字,datatype是方法返回数据类型,method是方法名称。
案例1:在类中声明一个静态变量和一个静态方法。
在PbaseUnit13项目sample包下创建StaticSample类。代码如下:
/**
* @Title: StaticSample.java
* @Package sample
* @Description: Java基础知识课程案例
* @author 编程训练营
* @date
* @version V1.0
*/
package sample;
/**
* @ClassName: StaticSample
* @Description:类(静态变量和静态方法)案例
* @author 编程训练营
* @date
*
*/
public class StaticSample {
// 声明一个静态变量
static double PI = 3.14;
// 声明一个静态方法
static double getArea(double r)
{
return PI * r * r;
}
}程序结构分析
程序声明了两个静态成员:PI是静态变量,并赋值为3.14;getArea()方法是静态方法,形参r是圆的半径,该方法用于计算并返回圆的面积。
在PbaseUnit13项目sample包下创建StaticSampleTest类。代码如下:
/**
* @Title: StaticSampleTest.java
* @Package sample
* @Description: Java基础知识课程案例
* @author 编程训练营
* @date
* @version V1.0
*/
package sample;
/**
* @ClassName: StaticSampleTest
* @Description: Java基础知识课程案例
* @author 编程训练营
* @date
*
*/
public class StaticSampleTest {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
// 计算圆的面积
double dArea = StaticSample.getArea(5.0);
System.out.println("圆的面积:" + dArea);
//输出StaticSample类的静态变量PI
System.out.println("PI = " + StaticSample.PI);
}
}程序结构分析
程序使用StaticSample类的静态方法getArea来计算圆的面积。因为StaticSample类和StaticSampleTest类在同一个包内,因此StaticSampleTest类不需要使用import语句来导入StaticSample类。
StaticSample类的getArea()方法是静态方法,无需实例化StaticSample类,直接使用StaticSample类名就可以调用getArea()方法。
StaticSample类的PI是静态变量,可以使用StaticSample类名来访问静态变量PI。