Java基础___数组
数组
概念:同一种类型数据的集合。其实数组就是一个容器。数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
格式1: 元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5];
格式2:元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
示例:int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};
int[] arr = {3,5,1,7};
注意:给数组分配空间时,必须指定数组能够存储的元素个数来确定数组大小。创建数组之后不能修改数组的大小。可以使用length 属性获取数组的大小。
数组遍历
int[] arr = { 1, 2, 3 };for (int y = 0; y < arr.length; y++) {
System.out.println(arr[y]);
// System.out.println("arr["+y+"]="+arr[y]); 打印效果 x[0]=1;
} // 那么这就是数组的第一个常见操作.遍历
数组中有一个属性可以获取到数组中元素的个数,也就是数组的长度. 数组名.length
int[] arr = { 1, 2, 3 };
for (int y = 0; y < arr.length; y++) {
System.out.println(arr[y]);
// System.out.println("arr["+y+"]="+arr[y]); 打印效果 x[0]=1;
} // 那么这就是数组的第一个常见操作.遍历
数组常用技巧
String[] arr=new String[]{"Java","C#","C++","C","Ruby"};
//数组转List集合
List<String> arrList=new ArrayList<String>(Arrays.asList(arr));
String[] arr = new String[] { "Java", "C#", "C++", "C", "Ruby" };
// 数组转set集合
Set<String> arrList = new HashSet<String>(Arrays.asList(arr));
String[] arr = new String[] { "Java", "C#", "C++", "C", "Ruby" };
// 判断数组中是否包含某值
boolean b = Arrays.asList(arr).contains("C#");
数组的常见异常
数组中最常见的问题:1. NullPointerException 空指针异常原因: 引用类型变量没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。int[] x = { 1, 2, 3 };x = null;System.out.println(x[1]);// java.lang.NullPointerException2. ArrayIndexOutOfBoundsException 索引值越界。原因:访问了不存在的索引值。int[] x = { 1, 2, 3 };System.out.println(x[3]);//java.lang.ArrayIndexOutOfBoundsException一数组角标越界异常:,注意:数组的角标从0开始。
数组的内存分析
二维数组: 一个元素为一维数组的数组。
格式1:数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数
格式2:数据类型[][] 变量名 = new 数据类型[m][];
格式3:数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
举例:
int[][] arr = new int[3][2];
定义了一个二维数组arr
这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2]
每个一维数组有2个元素,可以通过arr[m][n]来获取
表示获取第m+1个一维数组的第n+1个元素
应用:
/*
//需求:打印杨辉三角形
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
分析:看这种图像的规律
A:任何一行的第一列和最后一列都是1
B:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
步骤:
A:首先定义一个二维数组。行数如果是n,我们把列数也先定义为n。这个n的数据来自于键盘录入。
B:给这个二维数组任何一行的第一列和最后一列赋值为1
C:按照规律给其他元素赋值从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
D:遍历这个二维数组。
*/
import java.util.Scanner;
public class Demo9 {
public static void main(String[] args) {
// 创建键盘录入对象
Scanner sc = new Scanner(System.in);
// 这个n的数据来自于键盘录入。
System.out.println("请输入一个数据:");
int n = sc.nextInt();
// 定义二维数组
int[][] arr = new int[n][n];
// 给这个二维数组任何一行的第一列和最后一列赋值为1
for (int x = 0; x < arr.length; x++) {
arr[x][0] = 1; // 任何一行第1列
arr[x][x] = 1; // 任何一行的最后1列
}
// 按照规律给其他元素赋值
// 从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
for (int x = 2; x < arr.length; x++) {
// 这里如果y<=x是有个小问题的,就是最后一列的问题
// 所以这里要减去1
// 并且y也应该从1开始,因为第一列也是有值了
for (int y = 1; y <= x - 1; y++) {
// 每一个数据是它上一行的前一列和它上一行的本列之和。
arr[x][y] = arr[x - 1][y - 1] + arr[x - 1][y];
}
}