大龄屌丝自学笔记--Java零基础到菜鸟--013

数组,二维数组,杨辉三角形

 

1、数组

数组是存储同一数据类型的多个元素的集合。

数组既可以存储基本数据类型,也可以存储引用数据类型。

数组的定义格式:数据类型[] 数组名  //数组必须初始化之后,才能使用

数组动态初始化:数据类型[] 数组名 = new 数据类型[数组长度];  如:int[] a = new a[3];  //初始化时,只指定数组的长度   

数组静态初始化1:数据类型[] 数组名 = new 数据类型[]{元素1 , ... , 元素n};  如:int[] a = new a[]{1,2,3};  //初始化时,即指定每个数组元素的初始值

数组静态初始化2:数据类型[] 数组名 = {元素1 , ... , 元素n};  如:int[] a = {1,2,3};  //初始化时,即指定每个数组元素的初始值

数组元素的值:数组名[索引] ,如:int[] a = {1,2,3};  int n = a[1];  //n=2,数组的索引从0开始,数组是引用类型

 1 class Fin{
 2     public static void main(String[] args){
 3         int[] a=int[3];
 4         a[0]=1;
 5         a[1]=2;
 6         a[2]=3;
 7 
 8         int[] b=a;
 9         b[1]=4;
10 
11         System.out.println(b)     //输出数组b的地址(与数组a的地址相同)
12         System.out.println(a[1])  //a[1]=4
13     }
14 }

 

常见问题:索引越界异常、空指针异常。

索引越界异常:数组的索引大于数组的元素个数,访问不存在的索引,如:int[] a = int[3];  int n = a[5];   //报错

空指针异常:数组已不再指向【堆】内存,仍然访问数组,如:int[] a = int[3];  n = null;  int n = a[0];  //报错

获取数组的长度:数组名.length;  //int

1 // 数组的逆序
2 public static void liverpool(int[] arr){
3     int k=0;
4     for(int i=0,j=arr.length-1;i<j;i++,j--){
5         k=arr[i];
6         arr[i]=arr[j];
7         arr[j]=k;
8     }
9 }

 

2、二维数组

二维数组就是元素为一维数组的数组。

二维数组的定义格式:数据类型[][] 数组名

二维数组动态初始化1:数据类型[] 数组名 = new 数据类型[m][n];  如:int[][] a = new a[2][3];  //m(2)个长度为n(3)的一维数组   

二维数组动态初始化2:数据类型[] 数组名 = new 数据类型[m][];  如:int[][] a = new a[2][];  //m(2)个未初始化的一维数组   

二维数组静态初始化1:数据类型[] 数组名 = new 数据类型{{元素...}, ... ,{元素...}};  如:int[][] a = new int[][]{{1,2,3} , {4,5} , {6}};

二维数组静态初始化2:数据类型[] 数组名 = {{元素...}, ... ,{元素...}};  如:int[][] a = {{1,2,3} , {4,5} , {6}};

二维数组元素的值 :数组名[索引][索引] ,如:int[][] a = {{1,2,3} , {4,5,6}};  int n = a[1][2];  //n=6

 

3、杨辉三角形

每行的第一列、最后一列,值为1;第三行开始,每列(最后一列除外)的值等于上一行的前一列和上一行的本列之和,即a[m][n]=a[m-1][n-1]+a[m-1][n]。

 1 class Test{    
 2     public static void main(String[] args){
 3         yang(5);
 4     }
 5 
 6     public static void  yang(int n){    
 7         if(n>0){
 8             //二维数组
 9             int[][] y=new int[n][];
10             if(n==1){
11                 y[0]=new int[]{1};
12             }else if(n==2){
13                 y[0]=new int[]{1};
14                 y[1]=new int[]{1,1};
15             }else{
16                 y=new int[n][];
17                 y[0]=new int[]{1};
18                 y[1]=new int[]{1,1};
19                 for(int i=2;i<n;i++){
20                     y[i]=new int[i+1];
21                     for(int j=0;j<=i;j++){
22                         if(j==0||j==i){
23                             y[i][j]=1;
24                         }else{
25                             y[i][j]=y[i-1][j-1]+y[i-1][j];
26                         }
27                     }
28                 }
29             }
30             //输出
31             for(int i=0;i<y.length;i++){
32                 for(int j=0;j<y[i].length;j++){
33                     System.out.print(y[i][j]+ "  ");
34                 }
35                 System.out.println("");
36             }    
37         }else{
38             System.out.print("bug");  //n<1,bug
39         }
40     }
41 }

 

posted @ 2015-08-29 13:01  ilmari  阅读(146)  评论(0编辑  收藏  举报