static{} 的问题

Evenque 2008-04-19 09:27:42
看一小程序,其中一段如下:

private static long User_ID;
static{
try{
User_ID=getID();
}catch(getIDException e){
User_ID=GUEST;
}
}


***************************************
static{}可以在里面赋值?
它在什么情况下用,与函数有什么区别?
...全文
84 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
h273166784 2008-04-19
  • 打赏
  • 举报
回复
2fen
Evenque 2008-04-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 h273166784 的回复:]
JAVA代码运行原理
我看书的时候是
对一个类java运行的步骤
1先声明带static的变量
2运行带static的语句块
3带static的方法
4平常变量
5平常方法
你这样写我觉得应该有问题的
静态的可以掉动态的方法吗??
[/Quote]

忘说明了, getID()也是一static方法
我是风 2008-04-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 caoyinghui1986 的回复:]
静态块:

static{}可以在里面赋值?
可以 类加载的时候执行

它在什么情况下用
完成一些初始动作的时候 如:jdbc里的加载驱动就可以写到静态块里

与函数有什么区别?
类加载时执行,不需要显示调用.
[/Quote]
NbPrince 2008-04-19
  • 打赏
  • 举报
回复
静态子句。

你记住它在什么时候运行的就可以了。
在静态字段初始之后,非静态字段初始化之前,最后才是类构造器
Shine_Panda 2008-04-19
  • 打赏
  • 举报
回复
静态块:

static{}可以在里面赋值?
可以 类加载的时候执行

它在什么情况下用
完成一些初始动作的时候 如:jdbc里的加载驱动就可以写到静态块里

与函数有什么区别?

类加载时执行,不需要显示调用.
疯癫行者 2008-04-19
  • 打赏
  • 举报
回复
更正一下运行命令:
java -DmyApp.Count.counter=47 TestStaticInit
疯癫行者 2008-04-19
  • 打赏
  • 举报
回复
注意上面代码中的两个类应该分别写在两个不同的java文件中。
疯癫行者 2008-04-19
  • 打赏
  • 举报
回复
static 块只在装入类的时候运行一次,它通常用于初始化static属性。

下面是一个例子:

public class Count {
public static int counter;
static {
counter = Integer.getInteger("myApp.Count.counter").intValue();
}
}
public class TestStaticInit {
public static void main(String[] args) {
System.out.println("counter = "+ Count.counter);
}
}


用如下命令运行:
java -DmyAppCount4.counter=47 TestStaticInit
结果如下:
counter = 47
h273166784 2008-04-19
  • 打赏
  • 举报
回复
JAVA代码运行原理
我看书的时候是
对一个类java运行的步骤
1先声明带static的变量
2运行带static的语句块
3带static的方法
4平常变量
5平常方法
你这样写我觉得应该有问题的
静态的可以掉动态的方法吗??
goodmrning 2008-04-19
  • 打赏
  • 举报
回复
你的程序其实与下面的程序功能相同:

long temp;
try{
temp=getID();
}catch(getIDException e){
User_ID=GUEST;
}
private static long User_ID=temp;

62,623

社区成员

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

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