目录
1.数组(Array)
概念:是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
特点:
1.数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。
2.创建数组对象会在内存中开辟一整块连续的空间。占据的空间的大小,取决于数组的长度和数组中元素的类型。
3.数组中的元素在内存中是依次紧密排列的,有序的。
4.数组,一旦初始化完成,其长度就是确定的。数组的长度一旦确定,就不能修改。
5.我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。
6.数组名中引用的是这块连续空间的首地址。
2.一维数组
格式:
1.静态:数据类型A[ ] 变量名 = new 数据类型A[ ]{数据1,数据2,数据3,...};
2.动态:数据类型A[ ] 变量名 = new 数据类型A[ 数组长度 ];
* 1可简写为:数据类型A[ ] 变量名 = {数据1,数据2,数据3,...};
注意:数组有定长特性,长度一旦指定,不可更改。
数组的长度(.length):
每个数组都有一个属性length指明它的长度,例如:arr.length 指明数组arr的长度(即元素个数)
数组元素的默认值:
数组元素类型 | 元素默认初始值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0F |
double | 0.0 |
char | 0或写为:'\u0000' |
boolean | false |
应用类型 | null |
3.二维数组
格式:
1.静态:数据类型A[ ][ ] 变量名 = new 数据类型A[ ][ ]{ { 数据1 },{ 数据2 }} ;
2.动态:数据类型A[ ][ ] 变量名 = new 数据类型A[ m ][ n ];
m:表示这个二维数组有多少个一维数组。或者说一共二维表有几行
n:表示每一个一维数组的元素有多少个。或者说每一行共有一个单元格
* 1可简写为:数据类型A[ ][ ] 变量名 = { { 数据1 },{ 数据2 }} ;
2中的 n 可为空,后面在创建。
数组的长度与下标:
二维数组的长度/行数:二维数组名.length
二维数组的某一行:二维数组名[行下标],此时相当于获取其中一组数据。它本质上是一个一维数组。行下标的范围:[0, 二维数组名.length-1]。此时把二维数组看成一维数组的话,元素是行对象。
某一行的列数:二维数组名[行下标].length,因为二维数组的每一行是一个一维数组。
某一个元素:二维数组名[行下标][列下标],即先确定行/组,再确定列。
4.Arrays工具类
位置:在java.util包下。
常用的方法:
1.boolean isEquals = Arrays.equals(arr1,arr2); 比较两个数组的元素是否依次相等
2.Arrays.toString(arr1); 输出数组元素信息
3.Arrays.fill(arr1,值);将指定值填充到数组之中
4.Arrays.sort(arr1); 使用快速排序算法实现排序
5.Arrays.binarySearch(arr1,值);二分查找,前提是数组有序
5.数组俩个练习
Ⅰ.求最值、求和、求平均等。
/*
案例:定义一个int型一维数组,包含十个元素,分别赋一些随机整数,范围在[10,99],
然后求出所有元素的最大值、最小值、总和和平均值等,并输出出来。
*/
class ArrayText
{
public static void main(String[] args)
{
//定义一个int型的一维数组,包含十个元素
int[] arr = new int[10];
//分别赋一些随机数,范围在[10,99]
for (int i = 0;i < arr.length ;i++ ){
arr[i] = (int)(Math.random()*(99-10+1))+10;
System.out.print(arr[i] + "\t");
}
System.out.println();
//最大值、最小值
int max,min;
max = min = arr[0];
int mun = 0;
for (int i = 0;i < arr.length ;i++ ){
if (max < arr[i]){
max = arr[i];
}
if (min > arr[i]){
min = arr[i];
}
mun += arr[i];
}
System.out.println(max);
System.out.println(min);
System.out.println(mun);
//平均值
int averge = 0;
averge = mun/arr.length;
System.out.println(averge);
}
}
Ⅱ.杨辉三角
/*
案例3:使用二维数组打印一个 10 行杨辉三角。
提示:
1. 第一行有 1 个元素, 第 n 行有 n 个元素
2. 每一行的第一个元素和最后一个元素都是 1
3. 从第三行开始, 对于非第一个元素和最后一个元素的元素。即:
yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
*/
import java.util.Arrays;
class YangHuiTest
{
public static void main(String[] args)
{
//一个二维数组
int[][] arr = new int[10][];
for (int i = 0;i<arr.length ;i++ ){
//提示1
arr[i] = new int[i+1];
//提示2
arr[i][0] = arr[i][i] = 1;
//提示3
for(int j = 1;j < arr[i].length - 1;j++){
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
}
//遍历数组
for(int i = 0;i < arr.length;i++){
for(int j = 0;j < arr[i].length;j++){
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
}