黑马程序员技术交流社区

标题: 关于开辟内存空间 [打印本页]

作者: 孤神法法    时间: 2014-3-13 22:05
标题: 关于开辟内存空间
本帖最后由 孤神法法 于 2014-3-14 08:43 编辑

int i和 int i=new int()这两个有什么区别!为什么有的类直接实例化一个对象不用new  有的必须new一个?怎么判断到底是否需要用new关键字实例化一个对象?
作者: Darkhorse′Xa    时间: 2014-3-13 22:48
int i=10;是微软提供的一种简写方式.跟创建int i=new int(),i这个对象后给i赋值一样的.
如果是静态类或者静态方法比如;Console就是个静态类那么就可以直接用类名来调用里面的静态成员,就不需要去实例化.
作者: 百川    时间: 2014-3-14 00:36
本帖最后由 百川 于 2014-3-14 08:31 编辑

int i 只声明变量 i 并没有初始化 int,也就是说此时变量 i 并没有值。而是当赋值时初始化。
int i = new int 是先执行 int 的初始化,此时 i 的值为 0 。,然后将初始化好的int对象指向变量 i 。
在vs中断点调试一下可以知道结果。内置类一般不用new。自定义类需要使用new关键字。

经版主更正,int i 和int i=new int 的编译结果都是int i=0;个人觉得这个比较符合逻辑。但是int i若之后没有赋值生成时会报错,而int i=new int不会。求解释。
(我使用的版本是老师给的7.0)若不赋值生成时会将没有使用过的变量回收,赋值后的编译结果为int i;i =15的结果是int i =15;而int i =new int() ; i =15;的结果为int i =0;i =15。


作者: czwanglei    时间: 2014-3-14 07:44
百川 发表于 2014-3-14 00:36
int i 只声明变量 i 并没有初始化 int,也就是说此时变量 i 并没有值。而是当赋值时初始化。
int i = new i ...
  1. int i ; i = 15 的编译结果为 i=0,int i = 15 ;两种情况都先是i=0;
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2