在众多的语言中 类似static功能的关键字有很多
static是在对象执行到线程第一次就开始初始化,并且作为一种存储器,可以在一个类或者多个类之间共享它,使得我们我们不必去引进可能被其他方法访问或者破坏布局的全局变量
但是我有这样一个问题
class a
{
   public static String str;
   ......
   ......
   str=........   此处str获得了一个字符串
  try{

File f=new File(str+".txt");
FileWriter file2=new FileWriter(f);                       //
         BufferedWriter outfile2=new BufferedWriter(file2);
outfile2.write(text.getText(),0,(text.getText()).length());
outfile2.flush();
file2.close();
outfile2.close();
}
  catch(Exception e1){}

}
为什么这样创建出的文件是无名字的,被默认的生成为NULL的TXT文档 求解答

解决方案 »

  1.   


    public   static   String   str;
          ......
          ......
          str=........       此处str获得了一个字符串  
    这样赋值是错误的
    public   static   String   str这句语句被调用时就初始化为null了
    下面的str=........       此处str获得了一个字符串 不为static变量初始化了
    static变量只初始化一次
      

  2.   

    public   static   String   str;
    ......
    ......
    str=........  
    这种写法能通过编译吗?
      

  3.   

    省略了下  就是告诉str被赋值了
      

  4.   

    是初始化一次 我记得我看过一个例子是将static变量作为一个累加器而用的啊
      

  5.   

    可以在static方法里累加的  
      

  6.   

    一个变量被标识为static,则表示该变量是静态变量,即一个类中只初始给一次,而只能来创建时或者static代码块里给付值,如:
    public static String s="123";

    public static String s=null;
    static{
      s="123"
    }
    只有这两种情况下赋值是正确的,
    其他的任何时候赋值都不能更改其值
      

  7.   

    static 对于一个变量来说 当JVM碰到一个static变量  然后JVM会把这个static在赋值以后为他在内存中开辟一个唯一的空间同时创建一个指向这个变量的引用
    所以  对于对于同一个类来说  所有的实例都会持有指向该static的引用  
    也可以理解为  所有的实例都共享一个static 所以  累加器自然是可以的  因为他们共享同一个内存空间中的static
      

  8.   


    public   static   String   str;
          ......
          ......
          str=........       此处str获得了一个字符串 楼主是不是想要public   static  String str ;

    static void fun(){
    str =。

    }
    这个意思?
      

  9.   

    直接在定义成员变量的时候就赋值str试试看。代码省略太多不太好定位,至少把哪个方法贴出来吧。
      

  10.   

    现在才觉得有时候用指针或者引用会很方便,但是JAVA没有这个。 我一般在c++中都是 void f(const Type& arg)  
    这是用JAVA做就不能这样。
      

  11.   

    public class StaticTest {    public static String str = "Christ";
        
        public static void modify(){
         str = "Kevin";
        }
        
        public void print(){
         str = "Tom";
         System.out.println(str);
        }
        
        public static void main(String[] args) {
            System.out.println(str);

            modify();
    System.out.println(str);

    StaticTest st = new StaticTest();
    st.print();
    }
    }我打印出来的str的值变?请解释一下