java数组

数组
java内存分析
java内存

堆:存放new的对象和数组;可以被所有的线程共享,不会存放别的对象引用 sum=new int[];

栈 :存放基本变量类型(会存放这个基本类型的具体数值);引用对象的变量(会存放这个引用在堆里面的具体地址)

int [ ] sum;

方法区 :可以被所有线程共享;包含所有的class和static关键字

三种初始化状态
静态初始化:创建+赋值

int [] a ={1,2,3}
引用类型Man [ ] man={new Man(1,1),new Man(2,2)}

动态初始化: 包含默认初始化

int [] b = new int[10];

b[0]=10

目前个人理解:动态初始化就是数组中的元素在创建后已经有初始值,数组在堆内存中的更小的每一个内存空间赋值,如果不赋值也会有默认类型的默认的类型初始值

数组的四个基本特点
长度确定。数组一旦被创建,它的大小就是不可以改变的。

其元素必须是相同类型,不允许混合类型。

数组中的元素可以是任何数据类型,基本类型,引用类型。

数组变量是引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量

数组本身就是对象new,java中对象是在堆中的,数组对象本身是在堆中的

数组边界
下标合法区间[0,length-1],防止数组下标越界ArrayIndexOutOfBoundException

数组的使用
for循环与增强型for循环

for-each

数组作为方法入参:打印出数组

数组作为返回值:反转数组

多维数组
二维数组里的元素仍旧是数组。a[i][j]

Arrays类
1.数组工具类,对数据对象进行一些基本操作 。structrue查看当前类下的方法

打印输出数组 Arrays.toString

数组排序 Arrays.sort(), 仅排序,此工具类方法无返回值

2.查看JDK帮助文档

3.Arrays类的方法都是static修饰的静态方法

常用的方法fill,toString

冒泡排序
总共八大排序

冒泡排序:两层循环,外层表示冒泡轮数,里层依次比较

优化:判断在已经为有序的情况下,退出不再循环。

目前问题:对于for循环的理解和使用不够,不能深刻理解每一次循环时的意义,灵活使用嵌套循环

:外层一次循环只能只能筛选出第一个最大的数,经过内层循环一整遍将他放在最后面

稀疏数组
需求:编写五子棋游戏中,有存盘退出和续上盘的功能。

需要数组的内容多为0或相同的

存储压缩,记录有效值

posted @ 2022-04-02 17:42  青青菜  Views(26)  Comments(0)    收藏  举报