数组
概念:
数组可以看成是多个相同类型数据的集合,对这些数据的统一管理。
数组的变量时引用类型,数组本身也是个对象,数组中每个元素相当于该对象的成员变量 数组的元素可以使任何数据类型,包括基本数据类型和引用数据类型。
声明方式:
类型 [ ] 变量名 = new 类型 [长度](规定) 或 类型 变量名 [ ] = new 类型【长度】
int[ ] a;double [ ] d; String [ ] s; person [ ] p;
声明数组要用new关键字。
1,必须声明数组的长度, int[ ] = new int[5];
2,也可以直接定义数组的内容 int[ ] a = {1,2,3}
3, 数组的长度一旦被定义,则不可再变。
遍历和初始化(求int数组的和)
args(命令行参数)
静态初始化/动态初始化
基础类型
引用类型
二维数组的初始化和定义: int [ ] [ ] aa = new int [3] [ ];
数组的对象都会有一个叫lenth的属性,来记录长度。
访问数组中的一个元素使用索引
索引从0开始
int [ ] a = {1,2,3,4,5};
a[2]
main方法中的字符串数组(模拟计算器)
public static void main (String[] args){ if(args.length ! = 3){ System.out.println("请输入正确的格式!"); return; } int a = Integer.parseInt(args[0]); int b = Integer.parseInt(args[2]); String s = args[1]; swirch(s) { case"+" System.out.println(a + b ); case"-" System.out.println(a - b ); case"*" System.out.println(a x b ); case"/" System.out.println(a / b ); } }
练习500逢3退1
public class Count3Quit { public static void main (String[] args){ boolean[] persons = new boolearn[500]; for(int i = 0; i < persons.length; i ++){ persons[i] = true; } int index = 0; int count = 0; int len = persons.length; while( len ! = 1){ if(person[index] { count++; if(count == 3 ){ persons[index] = false; count = 0; len--; } } index++; if(index == 500){ index = 0; } } if(int i = 0 ;i< persons.length; i ++){ if(persons[i]){ System.out.println(i); } } } }
数组元素初始化
int = 0; 所有整数都是0 ;所有浮点型都是0.0 ; 布尔值都是flase; 所有引用类型都是null;
数组排序
反转排序
冒泡排序
pubic static void bubblesort(int[] arr){ int[] arr = {1,3,6,2,0,11,17,14}; bubbleSort(arr); p(arr); } public static void bubbleSort(int[] arr){ for(int i = 0; i < arr.length; i++){ for(int j = 0; j <arr.length-i-1;i++){ if(arr[j] > arr[j+1]){ int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } public static void p(int[] arr){ for(int i = 0; i < arr.length;i++){ System.out.print(arr[i] + " "); } }
直接选择排序
Arrays工具类
数组排序 Arrays.sort(arr);快速排序
填充数组Arrays.fill(arr,5);填充数组
数组复制Arrays.copyOf(arr,5);如果新数组的长度不如被复制的数组长度长有多少取多少 ,如果新数组的长度比较长,不足的部分用0填充
数组的范围赋值 Arrays.copyOfRange(); 索引范围包括开始,不包括结束。
比较两个数组是不是一样 Arrays.equals(int [ ] a, int [ ] b );
数组查询 binarySearch();二分搜索法 必须先排序。如果有,返回值是该数的索引。 如果没有返回值是该数应该所在的索引加一的相反数
数组范围查询