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或相同的
存储压缩,记录有效值

浙公网安备 33010602011771号