有行代码总是包空指针异常,是我定义的有问题吗?还是不能那样用,能解释下吗?

图片说明

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就是数组首地址。