java学习第5天

时间:2021-12-02 16:49:50

一维数组完了就是二维数组,和一位数组类似 .我们定义二维数组用的是 int[] []arr=new int[m][n],与一维类似,它在堆内存中存放,并以地址的形式访问,如下图。。   而遍历二维数组则是用了两个for循环,和C差不多

java学习第5天

学完数组也算是让我开始了解java的内存机制,然后,主要的问题就是参数传递。 举个例子。在main中我们定义一个int a=0;int b=1;r然后我们构建一个函数change用来测试,具体的change为 :

void change(int a,int b){

a++;

b ++;

}

如果加在主函数中会怎么样呢?答案是不是a=1,b=2呢,其实不然,主函数在进行int a=0;int b=1时,在栈中开了一起区域,保存这些信息,而在调用change方法时change里面的int a,int b会在栈中再开辟一个区域来存放这两个a,b,也就是说change里面的a.b也主函数中的是不一样的,这时如果我们在change中进行的操作是无法影响main函数中的a,b的,也就是说,我们如果输出a b那么结果还是0 1。

总结以一下,一旦方法里面调用的是某个类的地址,那么它的改变会影响到原先的,反之如果是定义在栈内的,那么它只是在栈内自己开辟了一个区域,不影响原来的值。