int a :定义一个整形变量,只有在为a赋值时,系统才会a在内存中分配相应空间 int a =new int :定义一个整形变量a的同时,系统为a在内存中分配相应空间 如果ok。给分和好评 谢谢
首先 int a=new int是不正确的; 应该是 int *a=new int; 最大区别在于int *a=new int是动态分配的内存单元,a是指向该内存单元的指针,生命周期控制在程序员手中,如果要释放该内存空间,必须delete a,否则会出现内存泄露。 而int a;就不存在这种问题,程序会自动回收内存的 ...
1、如果只是int a[10]和int* a=new int[10]比较的话,前者可能还更简单一点。只是在使用上int* a=new int[10]需要判断内存是否分配成功,以及在不用时需要使用delete[] a进行内存释放;2、如果不是a[10],而是a[1000000000]或者更大的话,那一般情况下,就只能使用int* a=new这种方式了。这...
new int a[5] 作为形参实际上是一般普通的指针,相当于int* ,函数本身是不知道这个参数的长度的,所以一般要再加一个参数作为数组长度。int a[5]作为参数,传入函数的也只是一个地址,但是函数知道数组的长度,而且传入的实参必须是这个长度,比如说int a[6]就不能作为参数传给函数。
结论就是 java当初没设计好,这两种方法就是写法不一样,前者有点面向过程,后者面向对象。不过如果在C语言里面类似这样写的话那就是有区别的。比如int a[]={10,9};int a[] = new int[]{10,9};前者系统会栈分配空间系统会自动实现内存分配和回收 后者系统会堆分配空间系统般会自动实现内存回收...
注1:int a = 11;if (a != null) {System.out.println(11111);}这种编译就报错,基本类型不能和null比较 注2:包装类In...
int a [10]; 在堆上分配一个地址,此地址是个指针,没有对应的实际值 new int[10] 在堆上分配10个连续地址,存储值默认为0(因为是int)int [] a = new int[10]; a指针指向实际地址,可以进行操作了。
int a[]={1,2};和 int a[ ] = new int[ ] {1,2 }; 这两种数组初始化都能用但是区别是啥??
要说区别,就是用new可以不直接定义数组的元素,只定义个数 int[] a = new int[5]
前者是使a指向一个数组,这个数组的每个元素都是int型,值没有初始化 后者是使a指向一个int型对象,这个对象的值为10