快速业务通道

Java编程那些事儿65——static修饰符 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
c
0
n
0
c
      

对于StaticDemo类型的对象sv1和sv2来说,由于使用默认的构造方法进行构造,所以每个成员变量都被初始化为对应数据类型的默认值,int的默认值为0,char的默认值为编号为0的字符,所以sv1和sv2对象中存储的值如上图所示。

而静态变量的存储和非静态变量的存储不同,在Java虚拟机内部,第一次使用类时初始化该类中的所有静态变量,以后就不再进行初始化,而且无论创建多少个该类的对象,静态变量的存储在内存中都是独立于对象的,也就是Java虚拟机单独为静态变量分配存储空间,所以导致所有的对象内部的静态变量在内存中存储时只有一个空间。这样就导致使用任何一个对象对该值的修改都是使该存储空间中的值发生改变,而其它对象在后续引用时就跟着发生了变化。静态变量就是使用这样的方式在所有的对象之间进行数值共享的。

静态变量在实际使用时,可以通过只存储一次来节约存储空间,这个特性导致在类内部定义的成员常量一般都做成静态的,因为常量的值在每个对象中都是相同的,而且使用static修饰也便于对成员常量的引用。

在类外部访问某类中静态变量(常量)的语法格式为:

类名.成员变量(常量)

例如:

StaticDemo.m

这样方便对于成员变量的访问。当然,语法上也不禁止使用:对象.成员变量,这样的语法格式进行访问,但是一般不推荐这样使用,而且有些类是无法创建对象的。

注意:static关键字不能修饰成员方法或构造方法内部的变量。

Java编程那些事儿65——static修饰符(3)

时间:2010-03-11 csdn 陈跃峰

8.7.1.2 静态方法

static修饰的方法称作静态方法。静态方法和一般的成员方法相比,不同的地方有两个:一是调用起来比较方便,二是静态方法内部只能使用静态的成员变量。所以一般静态方法都是类内部的独立的功能方法。例如为了方便方法的调用,Java API中的Math类中所有的方法都是静态的,而一般类内部的static方法也是方便其它类对该方法的调用。

示例代码如下:

//文件名MyMath.java public class MyMath{  public static int max(int a,int b){   return (a > b ? a : b);  } } //文件名TestMyMath.java public class TestMyMath{  public static void main(String[] args){   int m = 10;   int n = 20;   int k = MyMath.max(m,n);  } }

静态方法在类的外部进行调用时不需要创建对象,使用类名.方法名(参数)这样的语法格式进行调研,简化了代码的编写。

使用静态方法时,需要特别注意的是静态方法内部使用该类的非静态成员变量,否则将出现语法错误。

静态方法是类内部的一类特殊方法,只有在需要时才将对应的方法声明成静态的,一个类内部的方法一般都是非静态的。

8.7.1.3 静态代码块

静态代码块指位于类声明的内部,方法和构造方法的外部,使用static修饰的代码块。静态代码块在该类第一次被使用时执行一次,以后再也不执行。在实际的代码中,如果需要对类进行初始化的代码,可以写在静态代码块的内部。

示例代码如下:

//文件名StaticBlock.java public class StaticBlock{  static{   System.out.println(“静态代码块!”);  } }

静态代码块是一种特殊的语法,熟悉该语法的特点,在实际程序中根据需要使用。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号