您的位置:首页 > 职场人生

黑马程序员—Java基础—数组

2015-11-29 11:04 483 查看

-----------android培训java培训、java学习型技术博客、期待与您交流!------------ 

数组

数组

    (1)数组:存储同一种数据类型的多个元素的容器。

    (2)特点:每一个元素都有编号,从0开始,最大编号是长度-1。

                   编号的专业叫法:索引

     (3)定义格式

               A:数据类型[]数组名;

               B:数据类型数组名[];

    (4)数组的初始化

               A:动态初始化

                     只给长度,系统给出默认值

        

                     举例:int[]arr = new int[3];

              B:静态初始化

                          给出值,系统决定长度

        

                     举例:int[]arr = new int[]{1,2,3};

                  简化版:int[]arr = {1,2,3};

      (5)Java的内存分配

             A:栈存储局部变量

             B:堆存储所有new出来的

            C:方法区(面向对象部分详细讲解)

            D:本地方法区(系统相关)

            E:寄存器(CPU使用)

      

            注意:

                a:局部变量在方法定义中或者方法声明上定义的变量。

               b:栈内存和堆内存的区别

                     栈:数据使用完毕,就消失。

                    堆:每一个new出来的东西都有地址

                           每一个变量都有默认值

                             byte,short,int,long 0

                                 float,double0.0

                             char '\u0000'

                             boolean false

                             引用类型 null

                          数据使用完毕后,在垃圾回收器空闲的时候回收。
    (6)数组内存图

             A:一个数组

          B:二个数组

             C:三个数组(两个栈变量指向同一个堆内存)

     (7)数组的常见操作

 遍历 18行 Java
Raw

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18

//方式1:				public static void printArray(int[] arr) {					for(int x=0; x<arr.length; x++) {						System.out.println(arr[x]);					}				}							//方式2:				public static void printArray(int[] arr) {					System.out.print("[");					for(int x=0; x<arr.length; x++) {						if(x == arr.length-1) {							System.out.println(arr[x]+"]");						}else {							System.out.println(arr[x]+", ");						}					}				}

  B:最值

 最值 24行 Text
Raw

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
19
20
21
22
23
24

            最大值:				public static int getMax(int[] arr) {					int max = arr[0];										for(int x=1; x<arr.length; x++) {						if(arr[x] > max) {							max = arr[x];						}					}										return max;				}							最小值:				public static int getMin(int[] arr) {					int min = arr[0];										for(int x=1; x<arr.length; x++) {						if(arr[x] < min) {							min = arr[x];						}					}										return min;

  C:逆序
 逆序 15行 Java
Raw

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15

            //方式1:				public static void reverse(int[] arr) {					for(int x=0; x<arr.length/2; x++) {						int temp = arr[x];						arr[x] = arr[arr.length-1-x];						arr[arr.length-1-x] = temp;					}				}							//方式2:				public static void reverse(int[] arr) {					for(int start=0,end=arr.length-1; start<=end; start++,end--) {						int temp = arr[start];						arr[start] = arr[end];						arr[end] = temp;

D:基本查找

 基本查找 25行 Java
Raw

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25

D:基本查找			方式1:				public static int getIndex(int[] arr,int value) {					for(int x=0; x<arr.length; x++) {						if(arr[x] == value) {							return x;						}					}										return -1;				}							方式2:				public static int getIndex(int[] arr,int value) {					int index = -1;									for(int x=0; x<arr.length; x++) {						if(arr[x] == value) {							index = x;							break;						}					}										return index;				}

二维数组

    (1)元素是一维数组的数组。

    (2)格式:

        A:数据类型[][] 数组名 = new 数据类型[m]
;

        B:数据类型[][] 数组名 = new 数据类型[m][];

        C:数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}};

        D:数据类型[][] 数组名 = {{...},{...},{...}};

    (3)案例:

        A:二维数组的遍历

        B:二维数组的求和

        C:杨辉三角形

 

 打印杨辉三角形 38行 Java
Raw

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38

/* * 题目:打印出杨辉三角形(要求打印出10行如下图) * 				  	  1 * 					1	1 * 				1    2	  1 * 			  1	  3	    3   1 * 思路:定义一个二维数组int[][] arr=new int[][]; * arr[0]={1}; * arr[1]={1,1}; * arr[2]={1,arr[1][0]+arr[1][1],1}; * arr[3]={1,arr[2][0]+arr[1],arr[2][1]+arr[2][1],1} */public class Test33 {	public static void main(String[] args) {		for(int i=1;i<=10;i++){			for(int x=0;x<=array(i).length-1;x++){				System.out.print((array(i))[x]+"\t");			}			System.out.println("");		}	}	public static int[] array(int n){		int[] arr=new int[n];		if(n==1){			arr[0]=1;		}else if(n==2){			arr[0]=1;			arr[1]=1;		}else {			arr[0]=1;			for(int i=1;i<n-1;i++){				arr[i]=(array(n-1))[i]+(array(n-1))[i-1];			}			arr[n-1]=1;		}		return arr;	}}

-----------android培训java培训、java学习型技术博客、期待与您交流!------------ 


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: