在众多的语言中 类似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文档 求解答
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文档 求解答
public static String str;
......
......
str=........ 此处str获得了一个字符串
这样赋值是错误的
public static String str这句语句被调用时就初始化为null了
下面的str=........ 此处str获得了一个字符串 不为static变量初始化了
static变量只初始化一次
......
......
str=........
这种写法能通过编译吗?
public static String s="123";
或
public static String s=null;
static{
s="123"
}
只有这两种情况下赋值是正确的,
其他的任何时候赋值都不能更改其值
所以 对于对于同一个类来说 所有的实例都会持有指向该static的引用
也可以理解为 所有的实例都共享一个static 所以 累加器自然是可以的 因为他们共享同一个内存空间中的static
public static String str;
......
......
str=........ 此处str获得了一个字符串 楼主是不是想要public static String str ;
static void fun(){
str =。
}
这个意思?
这是用JAVA做就不能这样。
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的值变?请解释一下