第五节使用静态变量和静态方法
static修饰符可以用来修饰类的成员变量和成员方法。
用static修饰的成员变量表示静态变量,可以直接通过类名来访问。
用static修饰的成员方法表示静态方法,可以直接通过类名来访问。
1. 静态变量
(1) 类的成员变量有两种:
静态变量:使用static关键字所修饰的变量,称为静态变量。
实例变量:没有使用static关键字所修饰的变量,称为实例变量。
(2) 静态变量与实例变量的区别:
静态变量属于类,而不属于类的某个实例(对象)。内存中仅存在一个静态变量的副本,所有对象(类的实例)共享内存中该静态变量。
实例变量属于类的实例,而不属于类。内存中每个类的实例保存一个实例变量的副本。
静态变量的生存周期:从该变量所属的类被装载,直至包含该类的程序运行结束。
实例变量的生存周期:从该变量所属的类的新实例被创建,到该实例不再被应用而被释放所占的内存空间为止。
使用静态变量时:直接通过类名来访问。
使用实例变量时:通过类的对象来访问。
2. 静态方法
(1) 类的成员方法有两种:
静态方法:使用static关键字所修饰的方法,称为静态方法。
实例方法:没有使用static关键字所修饰的方法,称为实例方法。
(2) 静态方法与实例方法的区别:
静态方法属于类,而不属于类的某个实例(对象)。内存中仅存在一个静态
方法的副本,所有对象(类的实例)共享内存中该静态方法。
实例方法属于类的实例,而不属于类。内存中每个类的实例保存一个实例方法的副本。
静态方法的生存周期:从该方法所属的类被装载,直至包含该类的程序运行结束。
实例方法的生存周期:从该方法所属的类的新实例被创建,到该实例不再被应用而被释放所占的内存空间为止。
使用静态方法时:直接通过类名来访问。
使用实例方法时:通过类的对象来访问。
使用静态方法时,要注意以下几点:
○1在静态方法中,不能直接访问类的实例变量和实例方法。这是因为,对于实例变量和实例方法,需要先创建类的对象后,再通过类的对象来访问。
○2在静态方法中,不能以任何方式引用this和super关键字。这是因为,静态方法在使用前是不需要创建任何对象的,当静态方法被调用时,this所引用的对象根本就没有产生。
示例:下面的示例演示了如何使用静态变量和静态方法。
(1) 定义一个类StaticExample,在StaticExample类中定义一个静态变量s和一个静态方法display(),代码如下所示:
using System;
using System.Collections.Generic;
using System.Text;
namespace Test
{
class StaticExample
{
public static int s;  //定义了一个静态变量
public void count()  //定义一个实例函数
{
s++;
}
public static int display()  //定义一个静态函数
{
return s;
}
}
class Program
{
public static void Main(string[] args)
{
StaticExample.s = 0;  //给静态变量赋值
StaticExample se = new StaticExample();
//调用静态函数
Console.WriteLine("The value of variable is {0}", StaticExample.display());
}
}
}
(2) 定义一个测试类TestStaticExample,在TestStaticExample类中,通过类名StaticExample来访问静态变量和调用静态方法,代码如下所示:
package com.csmz.niit;
/*
* 测试如何使用静态变量和静态方法
*/
public class TestStaticExample {
public static void main(String[] args) {
StaticExample.s = 0; // 给静态变量赋值static修饰的变量
StaticExample se = new StaticExample();
/
/ 调用静态方法
System.out.println("The value of variable is "
+ StaticExample.display());
}
}
程序运行结果,如下所示:
The value of variable is 3

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。