JAVA02 数组
Posted 杰西啊杰西
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA02 数组相关的知识,希望对你有一定的参考价值。
学习教程:b站韩顺平
一、一维数组
1.1 数组的三种初始化
- 动态初始化-1
int a[] = new int[5]; //向黄建了一个数组,名字a,存放5个int
- 动态初始化-2
//1.先声明数组
int a[];
//或者
int[] a;
//2.创建数组
a = new int[10];
解释:先声明时,是一个空值,还没有分配空间
- 静态初始化
int a[]=2,5,6,7,8,89,90,34,56;
练习题:
判断:
1. String strs[] = 'a','b','c'; //x
2. String[] strs = "a","b","c"; //√
3. String[] strs = new String"a","b","c"; //x
4. String strs[] = new String[]"a","b","c"; //√
5. String[] strs = new String[3]"a","b","c"; //x
1.2 数组使用注意事项和细节
- 数组创建后,如果没有赋值,则有默认值
- 数组属于引用类型,数组型数据是对象object
1.3 数组赋值机制
- 数组在默认情况下是引用传递,赋的值是地址,赋值方式是引用传递,是一个地址,故二者使用的是同一个地址空间
int[] arr1 = 1,2,3;
int[] arr2 = arr1;
arr2[0] = 10; //arr2的变化会改变arr1(因为是地址拷贝)————浅拷贝
//tips:基本数据类型的拷贝是值拷贝
深拷贝——二者内容相同,但是使用不同的地址空间
1.4 数组扩容
- 实现动态给数组添加元素,实现数组扩容
- new一个的大容量数组,再将原数组变量名指向新数组,没有变量名的数组空间会成为垃圾被JVM回收
二、二维数组
2.1 二维数组初始化
- 静态初始化
int[][] arr =
1,1,1,
1,2,3,
1,3,4
;
for(int i=0;i<arr.length;i++)
for(int j=0;j<arr[i].length;j++)
a[i][j]xxx
- 动态初始化1:new方法初始化
int a[][]=new int[2][3];
动态初始化2:先声明,后分配
int arr[][];
arr = new int[2][3];
- 不定长列二维数组
一定要记得给一维数组开空间new,如果没有给一维数组new,那么arr[i]就是null
int[][] arr = new int[3][]; //创建了二维数组,一共由3个一维数组,但是每个一维数组还没有开空间
for(int i=0;i<arr.length;i++)
arr[i] = new int[i+1];
for(int j=0;j<arr.length;j++)
arr[i][j]xxx
2.2 应用案例
2.2.1 杨辉三角
- 第一行有一个元素,第n行有n个元素
- 每一行的第一个元素和最后一个元素都是1
- 从第三行开始,对于非第一个元素和最后一个元素的元素的值,
arr[i][j] = arr[i-1][j] + arr[i-1][j-1];
代码:
import java.util.Scanner;
public class YangHuiTriangle
public static void main(String[] args)
System.out.println("请输入杨辉三角形n的大小:");
Scanner myScanner = new Scanner(System.in);
int n = myScanner.nextInt();
int[][] triangle = new int[n][];
for(int i=0;i<n;i++)
triangle[i] = new int[i+1];
for(int j=0;j<triangle[i].length;j++)
if(i==0||j==0||j==triangle[i].length-1)
triangle[i][j]=1;
else
triangle[i][j]=triangle[i-1][j]+triangle[i-1][j-1];
for(int i=0;i<triangle.length;i++)
for (int j=0;j<triangle[i].length;j++)
System.out.print(triangle[i][j]);
System.out.println();
以上是关于JAVA02 数组的主要内容,如果未能解决你的问题,请参考以下文章