Java数组
数组的创建
两种方法:(这里举例为int数据类型)
int [] arr = {1,2,3,4,5}; //第一种
int [] brr = new int[5]; //第二种
两种方法的长度都是5,数组的下标也都是arr(brr)[0] - arr(brr)[4]
数组排序
例子如下:
int [] arr = {1,8,5,6,9,7};
Arrays.sort(arr);
System.out.println (Arrays.toString(arr));
结果:
注意图片中的文字
1.每个页块并不是直接存放数字,是它对应的二进制,这里为了没关只文字标注了一下
2.一页块4字节(int),一字节=8bit
3.如果数组地址是x,要想获取第y个数值的位置:
address = x+(y-1)*m
m是每个数值的占据物理单元个数
这里的y是以1开头的
y-1就是数组的索引
address = x+arr[i]*m
如图数组第一个数的索引为0,开头的地址是46,公式就为46+(1-1)*4=46
如图数组第一个数的索引为1,开头的地址是46,公式就为46+(2-1)*4=50
以此类推。。。
二维数组
当进行修改的时候,就会出现开辟新空间,地址改变,指向新开辟的空间,而不被指向的则为无效空间,后续被覆盖,如图:
"三维数组"
int[][][] arr3= new int[][][]{
{{1,2,3},{4,5,6},{7,8,9}},
{{1,2,3},{4,5,6},{7,8,9}},
{{1,2,3},{4,5,6},{7,8,9}},
{{1,2,3},{4,5,6},{7,8,9}}
}
指向
代码如下,看图很流畅的理解
出战入栈
代码如下,有视频演示出战和入栈
总结
1.sataic静态,如上图,加与不加的差别,当不加static,我们想在Test类里使用Person类里的m1方法时发现并不能使用,只能用加了static的m3
当我们想要使用的时候,就需要new一个Person();然后就可以使用里面的方法了
总结起来两句话:
public void 修饰是非静态方法,该类方法属于对象,在对象初始化(new Object())后才能被调用;
public static void 修饰是静态方法,属于类,使用类名.方法名直接调用;
2.变量的定义域也是栈结构,栈是控制执行顺序和定义域的