JAVA02 数组

Posted 杰西啊杰西

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA02 数组相关的知识,希望对你有一定的参考价值。

学习教程:b站韩顺平

一、一维数组

1.1 数组的三种初始化

  1. 动态初始化-1
int a[] = new int[5]; //向黄建了一个数组,名字a,存放5个int
  1. 动态初始化-2
//1.先声明数组
int a[];
//或者
int[] a;
//2.创建数组
a = new int[10];

解释:先声明时,是一个空值,还没有分配空间

  1. 静态初始化
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 数组使用注意事项和细节

  1. 数组创建后,如果没有赋值,则有默认值
  2. 数组属于引用类型,数组型数据是对象object

1.3 数组赋值机制

  1. 数组在默认情况下是引用传递,赋的值是地址,赋值方式是引用传递,是一个地址,故二者使用的是同一个地址空间
int[] arr1 = 1,2,3;
int[] arr2 = arr1;
arr2[0] = 10; //arr2的变化会改变arr1(因为是地址拷贝)————浅拷贝
//tips:基本数据类型的拷贝是值拷贝

深拷贝——二者内容相同,但是使用不同的地址空间

1.4 数组扩容

  1. 实现动态给数组添加元素,实现数组扩容
  2. new一个的大容量数组,再将原数组变量名指向新数组,没有变量名的数组空间会成为垃圾被JVM回收

二、二维数组

2.1 二维数组初始化

  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. 动态初始化1:new方法初始化
int a[][]=new int[2][3];
动态初始化2:先声明,后分配
int arr[][];
arr = new int[2][3];
  1. 不定长列二维数组
    一定要记得给一维数组开空间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 杨辉三角

  1. 第一行有一个元素,第n行有n个元素
  2. 每一行的第一个元素和最后一个元素都是1
  3. 从第三行开始,对于非第一个元素和最后一个元素的元素的值,
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 数组的主要内容,如果未能解决你的问题,请参考以下文章

韩顺平循序渐进学java 第21讲 集合(未完待续)

韩顺平循序渐进学Java零基础

韩顺平循序渐进学Java零基础学习笔记

韩顺平循序渐进学Java零基础 第01-08章

韩顺平循序渐进学Java零基础 第01-08章

零基础 快速学Java韩顺平 笔记整理(持续更新)