static可以多次赋值?

uestctsg 2009-07-18 04:01:34
package initialization;

//: initialization/ExplicitStatic.java
// Explicit static initialization with the "static" clause.
import static net.mindview.util.Print.*;

class Cup {
Cup(int marker) {
print("Cup(" + marker + ")");
}
void f(int marker) {
print("f(" + marker + ")");
}
}

class Cups {
static Cup cup1=new Cup(1);
static Cup cup2=new Cup(1);
static {
cup1 = new Cup(2);
cup2 = new Cup(2);
}
static {
cup1 = new Cup(3);
cup2 = new Cup(3);
}
Cups() {
print("Cups()");
}
}

public class ExplicitStatic {
public static void main(String[] args) {
print("Inside main()");
Cups.cup1.f(99); // (1)
}
//static Cups cups1 = new Cups(); // (2)
// static Cups cups2 = new Cups(); // (2)
} /* Output:
Inside main()
Cup(1)
Cup(2)
f(99)
*///:~
==============================
out:
Inside main()
Cup(1)
Cup(1)
Cup(2)
Cup(2)
Cup(3)
Cup(3)
f(99)
==============================
关于上面这段代码有两个地方想请教一下:
1、调用cup1.f的时候貌似cup2也同时被初始化了。是不是可以理解成只要有一个static方法或者static域被调用那么所有的static域都被创建了呢?
2、static{}和普通的语句好像不太一样呢,这里的cup1和cup2多次被赋值和书上所讲的static域只能一次赋值有点矛盾呢,这是为什么呢?
...全文
1187 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinarenzhou 2009-07-19
  • 打赏
  • 举报
回复
static可以多次赋值,但最好不要那么做,负责会失去静态变量的意义。
islandrabbit 2009-07-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chinarenzhou 的回复:]
static可以多次赋值,但最好不要那么做,负责会失去静态变量的意义。
[/Quote]

所以我工作中常见的代码是:


public static final String UESR_NAME = "user name";
m2168zeng 2009-07-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chinarenzhou 的回复:]
static可以多次赋值,但最好不要那么做,负责会失去静态变量的意义。
[/Quote]
我是初学JAVA的 老师也是五楼的说法
jeff2033333 2009-07-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chinarenzhou 的回复:]
static可以多次赋值,但最好不要那么做,负责会失去静态变量的意义。
[/Quote]
这个说法有水平!
阿彪兄 2009-07-18
  • 打赏
  • 举报
回复
static一般用于变量时表示常量
kiss870102 2009-07-18
  • 打赏
  • 举报
回复
楼上和楼上的楼上的说法都对,我就不再赘述了
sainer 2009-07-18
  • 打赏
  • 举报
回复
可以
static 属于类,非static的属于对象
bean 2009-07-18
  • 打赏
  • 举报
回复
static应该是可以多次赋值的,final才是不能改变的编译时常量,

62,614

社区成员

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

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