为什么“ static int a=1;
static int c=a;
static String b="asdf";
static String d=b;”编译可以通过
而“ int a=1;
static int c=a;
String b="asdf";
static String d=b;”就不可以呢?
简单说静态变量为什么不能接受非静态变量的赋值啊?而可以接受常量的赋值呢?
static int c=a;
static String b="asdf";
static String d=b;”编译可以通过
而“ int a=1;
static int c=a;
String b="asdf";
static String d=b;”就不可以呢?
简单说静态变量为什么不能接受非静态变量的赋值啊?而可以接受常量的赋值呢?
解决方案 »
- sakai,有没有了解的
- Servlet线程安全性,开发中都是用那个方法?
- Strust2.16 + spring2.5 + hibernate3.2 整合 出错!
- EJB3的一个问题
- 什么是大机测试呢,急求解!谢谢。。。。
- 关于apache2.0结合tomcat5.028的问题,欢迎大家来讨论,抛砖引玉!
- java dom4j xml 解析 求大虾指教
- tomcat里面如何设置外部IP和绑定域名,并且根据sever.xml设定多个分目录的网站绑定相应的域名?
- 急,xml的encoding的问题?
- hibernate 单向多对对的关联遇到的问题(困扰我很久了)
- Action 如何访问同一网段内 不同机器的web工程
- 求助java.sql.SQLException: I/O Error: Connection reset
String b="asdf";
static String d=b; 会在int a=1 之前 初始化 这时候a是不存在的 所以报错
static int c=a;
static String b="asdf";
static String d=b;”编译可以通过以上操作 是因为 a是static的,在类加载的时候已经有分配内存空间了,而 c也是static的 ,由于a在c前面定义 ,所以 a比c早初始化,即早分配内存空间,所以不会报错
而“ int a=1;
static int c=a; //这里的a不是static的 ,在类加载的时候不会初始化,只有在new 一个对象实例的时候才初始化 ,而c是static的,在类加载的时候会初始化,而此时还没有new 对象实例,所以a是没有分配内存空间的,所以不对了,一定要理解 static的变量或方法 不可以访问非static的变量或方法, 而非static的变量或方法 可以访问 static的变量或方法String b="asdf";
static String d=b;”就不可以呢?
简单说静态变量为什么不能接受非静态变量的赋值啊?而可以接受常量的赋值呢?