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};

注意:给数组分配空间时,必须指定数组能够存储的元素个数来确定数组大小。创建数组之后不能修改数组的大小。可以使用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.NullPointerException

2. 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 ];
      }
    }




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值