黑马程序员技术交流社区

标题: 为什么static只能修饰内部类 [打印本页]

作者: 林枢    时间: 2011-7-25 15:08
标题: 为什么static只能修饰内部类
而不能修饰外部的类
作者: 匿名    时间: 2011-7-25 15:17
标题: 希望对你有帮助 了解static的用法
[color=Red][/color]static:的用法
静态方法:通常,在一个类中定义一个方法为static,那就是说,用类名而无需本类的对象即可调用此方法。静态方法常常为应用程序中的其它类提供一些实用工具所用。
静态变量:静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间,当然对于final则另当别论了。
static定义的变量会优先于任何其它非static变量,不论其出现的顺序如何。
static{}内的代码,是用来进行显式的静态变量初始化,这段代码只会初始化一次,且在类被第一次装载时。在涉及到继承的时候,会先初始化父类的static变量,然后是子类的,依次类推。
通常一个普通类不允许声明为静态的,只有一个内部类才可以。这时这个声明为静态的内部类可以直接作为一个普通类来使用,而不需实例一个外部类。但是,不能从静态内部类的对象中访问非静态的外围类对象和方法(可访问外部静态的对象、方法)。
作者: 匿名    时间: 2011-7-25 16:21
静态方法
    通常,在一个类中定义一个方法为static,那就是说,用类名而无需本类的对象即可调用此方法。如下所示:
class Simple{
   static void go(){
     System.out.println("Go...");
   }
}
public class Cal{
  public static void main(String[] args){
    Simple.go();
  }
}
       调用一个静态方法就是“类名.方法名”,静态方法的使用很简单如上所示。一般来说,静态方法常常为应用程序中的其它类提供一些实用工具所用,在Java的类库中大量的静态方法正是出于此目的而定义的。
静态变量
    静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间,当然对于final则另当别论了。看下面这段代码:
class Value{
  static int c=0;
  static void inc(){
    c++;
  }
}
class Count{
  public static void prt(String s)
{
    System.out.println(s);
}
  public static void main(String[] args)
{
    Value v1,v2;
    v1=new Value();
    v2=new Value();
    prt("v1.c="+v1.c+"  v2.c="+v2.c);
    v1.inc();
    prt("v1.c="+v1.c+"  v2.c="+v2.c);  
  }
}
结果如下:
v1.c=0  v2.c=0
v1.c=1  v2.c=1
由此可以证明它们共享一块存储区。static变量有点类似于C中的全局变量的概念。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2