一个疑问(关于c++与java语言的初始化)

王朝java/jsp·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

先看下面的一个例子

class xiao{

xiao(){System.out.println("hello!world!");}

public class linfeng{

int a1,a2;

xiao Isyes;

linfeng(){System.out.println("Is it first?");}

public static void main(String args[]){

linfeng x=new linfeng();

System.out.println("a1="+a1);}

编译运行该程序后,由结果看到类linfeng在初始化对象x时并没有给xiaoIsyes赋初值,而在下划先句中改为xiaoisyes=new xiao()后,程序则会初始化类对象Isyes,这该是在"堆"中申请获得内存后初始化Isyes吧.问题是java为什么要这样初始化成员变量,其成员变量在内存中是如何被系统分配的呢(xiaolinfeng到底在内存中的状态如何呢?是根本就不存在吗?),而不像c++那样在定义完变量之后,操作系统就就为其分配内存空间?还有,既然有new操作,就该有delete操作,delete操作应该被封装到析构器函数中,析构函数是如何运行的以及何时运行,对编程人员来说,好象不如c++那样清晰?请高手指点??

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航