什么是数组
数组就是一串数字,一下子可以定义多个值
格式:数组类型 变量名称 = 变量值(可能不对 具体看代码)
平时总要int i = 0.....有了数组可以直接int[ ] b = new int[10]
数组类型
数组后面要加上“[ ]”这个符号 什么类型就在类型后面加上这个符号 例如: int[] double[]
数组是从0开始 第一个数的位置为0 不要直接拿1 1是第二个值了
小问题:拿上面的值计算所有元素的和
静态初始化
静态数组是直接在变量名字后面赋值 (创建+初始化)
动态初始化
内存分析:如下图:
数组的四个基本特点
1.长度是确定的 一旦创建不能改变
2.元素必须相同类型,不允许出现混合类型
3.数组中的元素可以是任何数据类型,包括基本类型和引用类型
4.数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量
数组本身就是对象,java中的对象是在堆中的,因此数组无论保存原始类型还是其他对象类型
数组的使用
1.打印全部的数组元素
2.计算所有元素的和
3.查找最大数
二维数组
二维数组就是在一个数组中再创建一些数组 可以一直重复下去
二维就是例如array[0] 在这个数组里面可以分为array[0][0],array[0][1] 这样再array[0]里面就有两对数组
这就被称为二维数组 可以以此内推
Arrays类
为什么要有这些类呢 主要是为了不要重复造轮子 可以直接调用就不用手写逻辑了
1.arrays打印数组元素可以直接这样写
sout(Arrays.toString(a))
2.数组排序
Arrays.sort(a);//这里让他进行排序
sout(Arrays.toString(a));
Array类中有很多可以使用不止于打印与排序
冒泡排序
第一个for循环决定判断总排序次数
数组长度-1 判断总循环次数
外层循环的作用是:
提取出目前未排序数组中最大的数,放置于已排数据的左边。也就是说我们第一次外层循环,是把最大数的位置交换到数组的最右边,第二次外层循环是把次大数交换到数组的次右边,依次类推。
为什么外层循环判断条件是i<n-1呢?
n 个数字总共需要 n-1 趟排序,i < n-1,外层循环变量 i 从 0 到 n-1 前一位 正好是 n-1 次。
第二个for循环为一次循环换位置次数
一次排序中的换位置次数 ( <n-1-i)
内层循环的作用是:
实现我们想要的大数下沉的过程。每次比较的是相邻两个数据,所以数组的长度n,我们只需要做 n-1 次的比较,就可以实现大数下沉,而 之前循环已经沉淀的大数并不需要再进行 排序了。
为什么内层循环判断条件是j < n-i-1呢?
这要从冒泡排序原理说起:冒泡排序每循环排序一次,就把最大的一个数排在了最右边(默认升序排),每一次排序都是在上一次排序的基础上再排序,(比如)第2次排序之后,i已经成2了,第三次排序是要在第二次的基础上在进行排序,而第二次排序后就已经把两个最大的数已经放到最后了,所以第三次排序就不需要在去比他俩,就得把这个“2“减掉,只需要循环n-i次(此时的i是2);为什么-i之后还要-1呢? 这是因为在内层循环的判断中是把当前值和后面一个值做比较的。如果不减1,则当循环到最后一个值的时候,再取下一个值就取不到,就需要额外的操作,或者抛出数组下标越界的异常。
标签:Java,Arrays,元素,----,循环,数组,类型,排序 From: https://www.cnblogs.com/wmyk/p/16849530.html