码迷,mamicode.com
首页 > 编程语言 > 详细

Java数组

时间:2017-11-18 20:01:39      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:机制   增加   避免   打印   bsp   length   max   常见   void   

定义:同一类型数据的集合。相当于一个容器。数组从下标0开始编号,方便操作这些元素。
格式一:元素类型 [] 数组名 = new 元素类型 [length]

int [] Arr = new int [5 ];//定 义5个int型数组

格式二: 类型 [] 数组名 =new 类型 [] {元素个数};

int [] Arr =new int [] {1,2,3};

类型 [] 数组名 ={元素个数};

int [] Arr={1,2,3,4};

静态数组初始化

public class Example_Arr0 {//静态数组初始化
    public static void main(String[] args) {
        int [] Arr={1,2,3,4};//定义数组
        //访问数组中对象
        System.out.println("Arr[0]="+Arr[0]);
        System.out.println("Arr[1]="+Arr[1]);
        System.out.println("Arr[2]="+Arr[2]);
        System.out.println("Arr[3]="+Arr[3]);
        System.out.println("Arr_length="+Arr.length);//Arrlength
    
        System.out.println("================");
        
        int [] Arr01={1,2,3,4};
        //1~3数组元素赋值
        Arr01[0]=12;
        Arr01[1]=3;
        Arr01[2]=34;
        System.out.println("Arr[0]="+Arr01[0]);
        System.out.println("Arr[1]="+Arr01[1]);
        System.out.println("Arr[2]="+Arr01[2]);
        System.out.println("Arr[3]="+Arr01[3]);
    }
}

运行结果:

Arr[0]=1
Arr[1]=2
Arr[2]=3
Arr[3]=4
Arr_length=4
================
Arr[0]=12
Arr[1]=3
Arr[2]=34
Arr[3]=4

动态数组初始化

public class Example_Arr {//动态初始化数组的定义及输出
    public static void main(String[] args) {
        int [] Arr=new int [4];//定义数组
        //访问数组中对象
        System.out.println("Arr[0]="+Arr[0]);
        System.out.println("Arr[1]="+Arr[1]);
        System.out.println("Arr[2]="+Arr[2]);
        System.out.println("Arr[3]="+Arr[3]);
        System.out.println("Arr_length="+Arr.length);//Arrlength
    
        System.out.println("================");
        
        int [] Arr01=new int [4];
        //1~3数组元素赋值
        Arr01[0]=12;
        Arr01[1]=3;
        Arr01[2]=34;
        //未指定的元素值仍是默认是0
        System.out.println("Arr[0]="+Arr01[0]);
        System.out.println("Arr[1]="+Arr01[1]);
        System.out.println("Arr[2]="+Arr01[2]);
        System.out.println("Arr[3]="+Arr01[3]);
    }
}

运行结果:

Arr[0]=0
Arr[1]=0
Arr[2]=0
Arr[3]=0
Arr_length=4
================
Arr[0]=12
Arr[1]=3
Arr[2]=34
Arr[3]=0
数组的遍历:

public class Example_Arr1 {//数组遍历
    public static void main(String[] args) {
        System.out.println("传统的遍历法=v");
        int [] Arr_0={1,2,3,4,5,6};
        for (int i = 0; i<Arr_0.length; i++) {
            System.out.println(Arr_0[i]);
        }
        
        System.out.println("+i+高逼格遍历=v");
        int [] Arr={1,2,3,4,5,6};//定义数组
        //for进行遍历
        for (int i = 0; i < Arr.length; i++) {
            System.out.println("Arr["+i+"]="+Arr[i]);
        }
        
        System.out.println("跳跃性遍历=v");
        int [] Arr_01={1,2,3,4,5,6};
        for (int i = 0; i < Arr_01.length; i+=2) {//i+=2 跳过的位数
            System.out.println("Arr_01["+i+"]="+Arr_01[i]);
        }
        
        System.out.println("反向遍历法=v");
        int [] Arr_02={1,2,3,4,5,6};
        for (int i = Arr.length-1; i >=0; i--) {
            System.out.println("Arr_01["+i+"]="+Arr_02[i]);
        }
    }
}

运行结果:

传统的遍历法=v
1
2
3
4
5
6
+i+高逼格遍历=v
Arr[0]=1
Arr[1]=2
Arr[2]=3
Arr[3]=4
Arr[4]=5
Arr[5]=6
跳跃性遍历=v
Arr_01[0]=1
Arr_01[2]=3
Arr_01[4]=5
反向遍历法=v
Arr_01[5]=6
Arr_01[4]=5
Arr_01[3]=4
Arr_01[2]=3
Arr_01[1]=2
Arr_01[0]=1

数组_内存空间的划分
寄存器 ==>CUP处理
本地方法区 ==>随版本的不同
方法区
栈内存 ==>1.存储局部变量(方法中的变量,[作用域])
     2.变量所属的作用域结束,该变量自动释放
堆内存 ==>存储是数组和对象(数组==对象),new建立都在堆中
特点:1.每一个实体都有首地址值
   2.堆内存中每一个变量都有默认初始化值,根据类型的不同而不同。
   3.垃圾回收机制

    /*
    *不同类型的数组默认值不一样
    *byte、short、int、long 默认值:0
    *float、double 默认值:0.0
    *char 默认值:空字符 ‘\u0000
    *boolean 默认值:false
    */

getMax()获取最值

public class Arr_getMax {//getMax获取数组的最大值
    public static void main(String[] args) {
        int [] Arr={1,-45,-76,94,5,-99};
        int max=getMax(Arr);//调用最大值方法
        /*int min=getMin(Arr);调用最小值方法*/
        System.out.println("max="+max);
    }
    public static int getMax(int []Arr){
        int max=Arr[0];//定义变量max存储最大值并设置第一个元素为最大值
        //遍历数组
        for (int x = 1; x < Arr.length; x++) {
            if (Arr[x]>max) { //Arr、max比较
            /*Arr[x]<min 最小值条件*/
                max=Arr[x];   //条件成立,Arr赋值max
            }
        }
        return max;
    }
}

 

数组排序:选择排序、冒泡排序

public class Arr_Sort {//选择排序
    public static void main(String[] args) {
        int []Arr={123,5,79,432,76,54};
        System.out.print("排序前:");
        Printf_Arr(Arr);
        select_Sort(Arr);//调用排序方法
        System.out.print("排序后:");
        Printf_Arr(Arr);

    }
    //遍历打印数组方法
    public static  void Printf_Arr(int []Arr){
            System.out.print("");
    for (int i = 0; i < Arr.length; i++) {
        if (i!=Arr.length-1) {
            System.out.print(Arr[i]+"、");
        }else
            System.out.println(Arr[i]+"");
    }
}
    //排序方法
    public static void select_Sort(int []Arr){
        for (int i = 0; i < Arr.length-1; i++) {
            for (int j = i+1; j < Arr.length; j++) {
        /*条件Arr[i]>Arr[j]==>Arr[i]<Arr[j] 则是从大到小排序*/
                if (Arr[i]>Arr[j]) {
                    int temp=Arr[i];
                    Arr[i]=Arr[j];
                    Arr[j]=temp;
                }
            }
        }
    }
}

运行结果:

排序前:123、5、79、432、76、54
排序后:5、54、76、79、123、432

public class Arr_bubbleSort {
    public static void main(String[] args) {
        int []arr={12,34,6,7,83};
        System.out.print("排序前:");
        printf(arr);
        bubbleSort(arr);
        System.out.print("排序后:");
        printf(arr);
    }
    //遍历输出数组元素
    public static void printf(int []arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }
    public static void bubbleSort(int []arr){
        for (int i = 0; i < arr.length-1; i++) {
            /*
             * 内循环:
                -1:为了避免角标越界
                -i:外循环每增加一次,内循环次数递减
             * */
            for (int j = 0; j < arr.length-1-i; j++) {
                if (arr[j]>arr[j+1])//相邻元素比较 
                {//值得交换
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
            System.out.print("第"+(i+1)+"次排序后:");
            printf(arr);
        }
    }
}

运行结果:

排序前:12 34 6 7 83
第1次排序后:12 6 7 34 83
第2次排序后:6 7 12 34 83
第3次排序后:6 7 12 34 83
第4次排序后:6 7 12 34 83
排序后:6 7 12 34 83

数组常见错误:

public class Text_Arr {//数组常见异常
    public static void main(String[] args) {
        //当访问到数组中不存在的角标,就会发生异常
        /*int Arr[]=new int[3];
        System.out.println(Arr[3]);//ArrayIndexOutOfBoundsException
        */
        
        //当引用型变量没有任何实体指向时,还在操作实体,发生异常
        /*int Arr[]= new int[3];
        Arr=null;
        System.out.println(Arr[0]);//NullPointerException 空指针异常
        */
        
        int Arr[]=new int[2];
        System.out.println(Arr);//[I@119dc16 /*[数组 I整型 @分界线 119dc16哈希值*/
    }
}

二维数组
格式一:int []arr int[3][2];
格式二:int [][]arr=new int[3][2];

public class Arr_2 {//二维数组打印及求和
    public static void main(String[] args) {
        int sum=0;
        int [][]arr={{1,4,3},{2,4,5},{23,5}};
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                sum+=arr[i][j];
                System.out.print(arr[i][j]+" ");
            }
            System.out.println();
        }
        System.out.println("sum="+sum);
    }
}

运行结果:

1 4 3
2 4 5
23 5
sum=47

Java数组

标签:机制   增加   避免   打印   bsp   length   max   常见   void   

原文地址:http://www.cnblogs.com/cao-yin/p/7857661.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!