Java中static关键字


  有时,我们希望定义一个类成员(变量、方法),使它的使用完全独立于该类的任何对象。

          我们知道,一般情况下,类成员的使用必须通过由该类实例化出来的对象访问才行,但是java允许在类中创建这样一类成员:它可以被该类自己使用,而不必引用特定的实例。

          怎么创建呢?通过在成员的声明前面加上关键字static即可。

  如果一个成员被声明为static,它就能够在类的任何对象创建之前被访问一旦类被加载,所有的static语句都会被执行,如main(),程序在开始执行时必须调用main(),所以它被声明为static),而不必引用任何对象,可以将方法和变量都声明为static。

 1)   声明为static的变量实质上就是全局变量。当声明多个对象时,每个对象共用一个static变量。

 2)   声明为static的方法要注意:

(a)  他们仅能调用其他的static方法。

(b)  它只能访问static数据。

(c)  它们不能引用this或super。

另外,如果希望通过计算来初始化static变量,可以声明一个static块,static块仅在该类被加载时执行一次。


代码实例:

class StaticDemo{

static int b;

static int a=3;//static变量

static void meth(int x){//static方法

System.out.println("x="+x);

System.out.println("a="+a);

System.out.println("b="+b);

}

static{//static块

System.out.println("Static block initialized.");

b=a*4;

}

public static void main(String[] args){//主函数

meth(42);//调用StaticDemo类中的meth()方法

}

}


输出结果:

Static block initialized.

x=42

a=3

b=12

分析:

一旦StaticDemo类被加载,所有的static语句都会被执行。首先a被设置为3,接着static块执行(打印一条消息),最后,b被初始化为a*4或12。然后调用main(),main()调用meh()方法,把值42传递给x。3个println()语句引用两个static变量a和b,以及局部变量x。


在定义类的外面,static方法和变量都能独立任何对象被使用。访问static方法和变量只要用类名加点运算符(“classname.”)即可。例如,如果希望从类外面调用一个static方法,可以使用下面格式:

classname.method()

在这里,classname是类的名字,method为该类中定义的static方法。static变量可以通过同样的方式来访问——类名加点运算符。


代码实例:

class Static{

static int a=42;

static int b=99;//静态变量

static void callme(){//静态方法

System.out.println("a="+a);

}

}


class StaticByName{

public static void main(String[] args){

Static.callme();//直接通过“类名.方法”的方式来访问Static类中的静态方法“callme()”

System.out.println("b="+Static.b);//通过“类名.变量”来访问Static类中的静态变量“b”

}

}

输出结果:

a=42

b=99


参考文献:刘文杰 郑玉 刘志昊 《Java 7实用教程》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值