int[] newarr = new int[]{};应该这样写
我刚试了下又报了一个数组下标越界问题,,实在搞不懂了
newarr 是这个数组越界了把 = =
int[]nawarr = null 是一个数组类型的空引用 , 所以你怎么搞都没用
你定义的newarr数组没有实例化,相当于只定义了一个引用,而引用的对象又没有。当你需要给这个数组的第一个元素赋值的时候,JVM会先去找这个对象,而找不到这个引用的对象就报空指针异常了。
你定义的newarr数组没有实例化,相当于只定义了一个引用,而引用的对象又没有。当你需要给这个数组的第一个元素赋值的时候,JVM会先去找这个对象,而找不到这个引用的对象就报空指针异常了。
初始化数组啊 不初始化肯定报空指针啦
int【】 数组名 = new int【】{};
int 【】 数组名 = new int【】;
int 【】 数组名 = {}; 好久没用这个了 也不知道对不对 参考参考就得了
int []newarr=null;这一句,定义数组的时候有问题,二楼楼主说的也是我想表达的意思,
int []newarr=new int[]newarr{}
不清楚你想要的是什么,但在Java中,所有的“属性”想要使用,必须初始化,没有初始化的属性是不能使用的,就像你写的那样
int [] newarr = null; //为空,未初始化
newarr[i] = arr[i]; //空指针异常
具体的你可以在网上查一下有关“null”的文章
根据我理解的你的意思,我写了两个方法,供你参考
public class Test {
public void method(){
int [] arr={8,1,5,2,7,9,0,3,6,4};
int [] newarr = null;
int temp;
for(int i=0;i<arr.length;i++){
if(i==0){
int gou = arr[i];
System.out.println(gou);
//初始化数组
newarr = new int[]{arr[i]};
System.out.println(gou);
continue;
}
}
}
public void method2(){
int [] arr={8,1,5,2,7,9,0,3,6,4};
//定义成集合,ArrayList底层实现的是数组,它是一个可以变化的数组
ArrayList<Integer> newarr = new ArrayList<Integer>();
int temp;
for(int i=0;i<arr.length;i++){
if(i==0){
int gou = arr[i];
System.out.println(gou);
newarr.add(arr[i]);
System.out.println(gou);
continue;
}
}
}
/**
* 空指针例子
*/
public void method3(){
Test test = null;
test.method(); //空指针异常
}
public static void main(String[] args) {
new Test().method();
}
}
数组在实例化的时候必须制定长度,也就是开辟固定的内存空间,数组的长度必须是固定可知的,如果想用动态的就用arrayList,好好看下集合框架
楼主,java需要动态分配内存,你定义newarr时,定义了一个空的对象,并未给对象初始化并分配内存。改成arraylist吧,用add方法
int[] newarr = null 改成
int* newarr = (int*)malloc(sizeof(int)*(arr.length));
malloc 向系统申请分配指定size个字节的内存空间,返回类型为void* ,void*表示未确定类型的指针。
这里newarr就是数组首地址。