static到底对一个变量意味着什么

lie1213 2009-12-14 03:35:09
在众多的语言中 类似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文档 求解答
...全文
124 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanjunbao 2009-12-14
  • 打赏
  • 举报
回复
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的值变?请解释一下
lie1213 2009-12-14
  • 打赏
  • 举报
回复
现在才觉得有时候用指针或者引用会很方便,但是JAVA没有这个。 我一般在c++中都是 void f(const Type& arg)
这是用JAVA做就不能这样。。。。
SambaGao 2009-12-14
  • 打赏
  • 举报
回复
哪样做的话,就重构一下。把这个变看抽出来是否更好。
lie1213 2009-12-14
  • 打赏
  • 举报
回复
刚才我也想到 弄个静态的方法去改变它的值 也只有这样了
weiminan 2009-12-14
  • 打赏
  • 举报
回复
直接在定义成员变量的时候就赋值str试试看。

代码省略太多不太好定位,至少把哪个方法贴出来吧。
MINISUDA 2009-12-14
  • 打赏
  • 举报
回复

public static String str;
......
......
str=........ 此处str获得了一个字符串

楼主是不是想要

public static String str ;

static void fun(){
str =。。。。

}

这个意思?
一头头 2009-12-14
  • 打赏
  • 举报
回复
static 对于一个变量来说

当JVM碰到一个static变量 然后JVM会把这个static在赋值以后为他在内存中开辟一个唯一的空间

同时创建一个指向这个变量的引用


所以 对于对于同一个类来说 所有的实例都会持有指向该static的引用
也可以理解为 所有的实例都共享一个static

所以 累加器自然是可以的 因为他们共享同一个内存空间中的static
lie1213 2009-12-14
  • 打赏
  • 举报
回复
对的 静态变量可以由静态和非静态使用 累加的可以用静态方法去做。。 那完蛋了~ 这个变量在我的这个程序里很关键。。这下惨了 主要的接口都错了 哎。。。
monkeyking1987 2009-12-14
  • 打赏
  • 举报
回复
一个变量被标识为static,则表示该变量是静态变量,即一个类中只初始给一次,而只能来创建时或者static代码块里给付值,如:
public static String s="123";

public static String s=null;
static{
s="123"
}
只有这两种情况下赋值是正确的,
其他的任何时候赋值都不能更改其值
MINISUDA 2009-12-14
  • 打赏
  • 举报
回复
可以在static方法里累加的
lie1213 2009-12-14
  • 打赏
  • 举报
回复
是初始化一次 我记得我看过一个例子是将static变量作为一个累加器而用的啊
Agile牧 2009-12-14
  • 打赏
  • 举报
回复
关注中
lie1213 2009-12-14
  • 打赏
  • 举报
回复
省略了下 就是告诉str被赋值了
swandragon 2009-12-14
  • 打赏
  • 举报
回复
public static String str;
......
......
str=........
这种写法能通过编译吗?

MINISUDA 2009-12-14
  • 打赏
  • 举报
回复

public static String str;
......
......
str=........ 此处str获得了一个字符串

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

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧