JavaSE学习笔记-----第三章数组

概述:Array(数组) :多个相同类型数据按一定顺序的集合
常见概念:数组名 下标(索引) 元素 数组的长度
特点:数组是有序排列的
数组是引用数据类型
数组的元素可以是基本数据类型 和引用数据类型
连续的存储空间
长度一旦确定,不能修改
分类: ①按照维数:一维数组,二维数组。。。。
②按照数组元素的类型: 基本数据类型的数组 引用数据类型的数组
一维数组的使用:
①一维数组的声明和初始化
int[] a = new int[]{1,2,3,4}; //静态初始化
int[] a = new int[5]; //动态初始化
int[] a = {1,2,3} //类型推断
总结:数组一旦初始化完成其长度就确定了
②如何调用数组指定位置的元素(0,length-1)
a[index]
③如何获取数组的长度
a.length
④遍历数组元素 foreach for
⑤数组元素的默认初始化值
整型:0 浮点型:0.0 char :0或者’\u0000’ 相当于’ ’ 而非’0’ 布尔型 :false 引用数据类型:null
⑥数组的内存解析
JavaSE学习笔记-----第三章数组_第1张图片

多维数组的使用:    二维数组:        
①二维数组的声明和初始化            
int[][] arr = new int[][]{{1,2,3},{4,5}};        //静态初始化            
int[][] arr1 = new int[4][3];            //动态初始化           
int[][] arr2 = new int[4][];            //动态初始化            
int[][] arr3 = {{1,2,3},{4,5,6,7}};    //类型推断        
②如何调用数组的指定位置的元素            
arr[0][1] = 2;            
arr1[0][1] //0            
arr2[0][1]    //空指针异常        
③获取数组的长度            
arr3.length = 2;            
arr3[1].length = 4        
④如何遍历二维数组           
 嵌套循环        
 ⑤数组元素的默认初始值            
 二维数组分为外层数组的元素和内层数组的元素                
 int[][] arr4  = new int[4][3];                
 外层:arr4[0]  arr4[1]   
 内层:arr4[0][0]                
 外层:默认初始值:    地址值[4][2]  或者null [4][]                
 内层:与一维数组相同[4][3] 或者报错[4][]        
 ⑥内存解析    
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200719090047677.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTIyNjU1OA==,size_16,color_FFFFFF,t_70)

数组中常见算法:
1.数组元素的赋值(杨辉三角、回形数等)
2.求数值型数组中元素的最大值,最小值、和值、平均值
求最大值 初始值要小、求最小值初始值要大
3.数组的复制、反转、查找(线性查找、二分查找)
数组的复制: array2 = new int[arr1.length]
for(int i =0;i array2[i] = arr1[i];
}
数组的反转:首尾交换
for(int i = 0;i int temp =arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
线性查找:从头至尾遍历 String:equals
二分查找: (前提是有序的)
int head = 0;
int end = arr.length-1;
while(head<=end){
int middle = (head+end)/2;
如果arr[middle] =要找的值 就找到了 如果大于end = middle -1 否则 head = middle +1
}
4.排序算法
衡量排序算法的优劣:
1.时间复杂度:分析关键字的比较次数和记录的移动次数
2.空间复杂度:分析排序算法中需要多少辅助内存
3.稳定性:两个相等的值排序后的位置时候发生改变
分类:外部排序、内部排序(内存中完成)
十大内部排序算法:
选择排序:直接选择排序,堆排序
交换排序:冒泡排序、快速排序
插入排序:直接、折半、shell
归并排序、桶式排序、基数排序
算法的五大特征:输入、输出、有穷性、稳定性、可行性
冒泡排序:
for(int i =0;i for(int j = 0 ;j 交换
}
}
数组工具类:Arrays:
equals :判断两个数组是否相等
toString 输出数组信息
fill:将指定值填充到数组
sort:排序
binarySearch :二分查找
数组中常见异常:
1.数组角标越界异常:ArraysIndexOutofBoundsException
2.空指针异常:NullPointerException
数组是null 数组中元素就是空指针

你可能感兴趣的:(JavaSE学习笔记,java,算法,排序算法,javase)