java全局变量先执行还是构造先执行

yza3137957 2011-05-04 11:16:58
java全局变量先执行还是构造先执行
...全文
440 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
nacl 2011-05-05
  • 打赏
  • 举报
回复
我记得书上都说是在类加载的同时就把该类的static变量就分配内存了。直到程序结束才释放。
w5087346 2011-05-05
  • 打赏
  • 举报
回复
马士兵说JAVA里没全局变量.变量按位置分为成员变量和局部变量.请问是成员变量是不是楼主所说的全局变量啊.....新手乱说的几句....大家别笑啊
chzhm159 2011-05-05
  • 打赏
  • 举报
回复
不能说是全局变量吧,应该是成员变量,成员变量又分两种一种实例属性(不已static修饰的)另外一种是类属性(一static修饰的)。以static修饰的是在类得准备阶段就存来了,知道系统完全销毁这个类,而不以static修的的类属性是在这个类的实例在创建的时候才开始存在。所以要看情况而定。
s030701417 2011-05-05
  • 打赏
  • 举报
回复
全局变量
suntingtingonly 2011-05-05
  • 打赏
  • 举报
回复
你的那个全局变量是static吗?
这个在解析的时候 就被加载了。。
wangfeiwoyun 2011-05-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huangbiao86 的回复:]

当你new一个对象的时候,会调用这个对象的一个构造函数,才在内存中分配给这个对象所用的空间。这时候就给这个对象的所有属性同时分配的地址都在这个对象的空间里。这样一来就是先执行构造函数的,这是最简单的理解。
楼主可以先了解一下new对象时候的空间分配
[/Quote]
错了咯,是先加载类,在类初始化前有个准备阶段,在这时候创建的类变量(static变量)并赋默认值,然后在类初始化的时候对类变量初始化。
实例化一个类是先给实例变量(非static变量)分配内存空间,并初始化为默认值,然后再调用实例初始化块,构造器的。
chanyoujava 2011-05-05
  • 打赏
  • 举报
回复
类加载和创建对象是两个不同过程。先类加载,分配类需要的内存放在永固区,其中如果有静态变量,那么会初始化静态变量,分配空间,也是在永固区。然后在初始化类的对象。所以应该是静态变量先分配空间
龙四 2011-05-05
  • 打赏
  • 举报
回复
java中没有全局变量一说。请使用专业词汇
彩票虫虫 2011-05-05
  • 打赏
  • 举报
回复
全局变量,只要你加载了这个类就已经为全局变量分配空间了.
FullStackTestClub 2011-05-04
  • 打赏
  • 举报
回复
理解这个问题你就要理解类加载和对象加载的问题啦!全局变量是在类加载时执行的!就是在编译时!而构造函数是在对象生成时加载的!所以是全局变量先执行!
vonzhou 2011-05-04
  • 打赏
  • 举报
回复
全局变量先
IT人.阿标 2011-05-04
  • 打赏
  • 举报
回复
当你new一个对象的时候,会调用这个对象的一个构造函数,才在内存中分配给这个对象所用的空间。这时候就给这个对象的所有属性同时分配的地址都在这个对象的空间里。这样一来就是先执行构造函数的,这是最简单的理解。
楼主可以先了解一下new对象时候的空间分配
dagouaofei 2011-05-04
  • 打赏
  • 举报
回复
全局变量
public class Calculator {
public static String a = "aa";
public Calculator() {
System.out.print(a);
}
public static void main(String[] args) {
Calculator c = new Calculator();
}
}

62,614

社区成员

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

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