论坛首页 Java企业应用论坛

static解析

浏览 15708 次
锁定老帖子 主题:static解析
精华帖 (2) :: 良好帖 (4) :: 新手帖 (15) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-06-14  
ddzero 写道
huangyuanmu 写道
静态块有的时候还是蛮有用的,在类被第一次引用时执行一次。这种应用的典型就是jdbc驱动,还记得jdbc编程中著名的那句Class.forName("XXXX")吗?

域,或者称为块,可以认为是一种行为上的初始化,与变量初始化具有相同的优先级。静态亦即共享,静态域可以在第一次引用时执行,主要作用就是进行某些共享性的操作,比如你说的JDBC。至于非静态域,其实可以用构造方法代替。

正解!!!
我只用过静态域来加载jdbc驱动
0 请登录后投票
   发表时间:2010-06-14  
logic 写道
首先,很感谢楼主对静态类的补充,谢谢。
但如果能够把以下两个问题的答案补充到静态类中去,就可以说完美了。

1,非静态类中为什么不能定义静态(static)的属性or方法?
2,静态类中为什么不能访问外部类的非静态(no static)的属性or方法?


关于第二个问题:就像静态方法要调用非静态成员一样,静态类如果想访问外部类的非静态成员,需要对外部类实例化。
0 请登录后投票
   发表时间:2010-06-15  
参加一次scjp考试,一切都明白了
0 请登录后投票
   发表时间:2010-06-15  
logic 写道
首先,很感谢楼主对静态类的补充,谢谢。
但如果能够把以下两个问题的答案补充到静态类中去,就可以说完美了。

1,非静态类中为什么不能定义静态(static)的属性or方法?
2,静态类中为什么不能访问外部类的非静态(no static)的属性or方法?


1. 首先我想你问的是 non static inner class,对吧。

官方的说明是,non-static inner class 不是属于 class ,而是属于 object ,所以你得实例化外部,才能实例化里面。 如果 non - static inner class 属于 object, 你在里面又申明了一个属于 class 的 static 变量,岂不是矛盾。

此外,从语义上面还有一层解释。

2. 道理跟1一样,静态类是属于object的,你其他的 no static 属性or方法也是属于object的,没有实例化,都不能访问
0 请登录后投票
   发表时间:2010-06-15  
beneo 写道
logic 写道
首先,很感谢楼主对静态类的补充,谢谢。
但如果能够把以下两个问题的答案补充到静态类中去,就可以说完美了。

1,非静态类中为什么不能定义静态(static)的属性or方法?
2,静态类中为什么不能访问外部类的非静态(no static)的属性or方法?


1. 首先我想你问的是 non static inner class,对吧。

官方的说明是,non-static inner class 不是属于 class ,而是属于 object ,所以你得实例化外部,才能实例化里面。 如果 non - static inner class 属于 object, 你在里面又申明了一个属于 class 的 static 变量,岂不是矛盾。

此外,从语义上面还有一层解释。

2. 道理跟1一样,静态类是属于object的,你其他的 no static 属性or方法也是属于object的,没有实例化,都不能访问

谢谢楼上的解答,完全能够理解了,建议楼主一块总结到static解析里面去。
0 请登录后投票
   发表时间:2010-06-15  
beneo 写道

2. 道理跟1一样,静态类是属于object的,你其他的 no static 属性or方法也是属于object的,没有实例化,都不能访问

静态类应该是属于class的吧
0 请登录后投票
   发表时间:2010-06-16  
ddzero 写道
beneo 写道

2. 道理跟1一样,静态类是属于object的,你其他的 no static 属性or方法也是属于object的,没有实例化,都不能访问

静态类应该是属于class的吧


my mistake, thanks

static inner class 是属于 class 的,你其他的 no static 属性or方法是属于object的
0 请登录后投票
   发表时间:2010-06-16  
java基础 http://java.afity.com
0 请登录后投票
   发表时间:2010-08-09  
请问为什么可以在非静态内部类中定义 比如
static final int i= 0;
这类的属性?
0 请登录后投票
   发表时间:2010-08-09  
Firklaag 写道
请问为什么可以在非静态内部类中定义 比如
static final int i= 0;
这类的属性?


jls 写的很清楚

http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.1.3

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics