zoukankan      html  css  js  c++  java
  • Java数组

    数组储存相同类型值的序列

    1.声明数组

    int[] a这仅仅时声明了变量a,并没有将a初始化为真正的数组,应该使用new来操作符创建数组。

    //第一种数组创建方式
    int []arr=new int [n]//创建一个长度为n的数组,Java中数组长度不要求是常量
    //第二种创建数组的方式
    int []arr={1,2,3,4,5}//也可以写成arr=new int[]{1,2,3,4,5}
    

    注:Java允许出现长度为0的数组,int []arr=new int [0], int[]arr={}。

    多维数组

    double [][]arr=new double[m][n]
    double [][]arr=new double{{1,2,3},{1,23,4}}
    

    2.数组的访问

    创建一个数组时,所有元素都被初始化为0,boolean数组全被初始化为false。对象数组全被初始化为null,例如String []arr,所有数组都是null串,如果想为空串只能用循环一个个赋值。

    3.for each循环

    增强for循环结构,可以用来依次处理数组中的每个元素,不必指定下标。

    格式为:for(Variable:collection)statement

    注:collection这集合表达式必须是一个数组或者是一个实现了Iterable接口的类对象(例如ArrayList)

    int []arr={1,2,3,2,42545,56};
        for(int x:arr)
        {
            System.out.println(x);
        }
    

    打印二维数组时候需要设置一个双重循环

    double [][]arr=new double[][]{{1,23,1},{2,3,4}};
        for(double []row:arr)
            for(double value:row)
            {
                System.out.println(value);
            }
    

    4.数组的拷贝

    Java中,允许将一个数组变量拷贝到另一个数组变量。这时两个变量将同时引用同一个数组:

    int []arr={1,2,3,2,42545,56};
        int []arr1=arr;
        arr1[5]=10;
        for(int x:arr)
        {
            System.out.println(x);
        }
    

    我们会发现改变数组一个数组,两个数组同时都会改变。如果希望将一个数组的所有值拷贝到一个新的数组中去,就要使用Arrays类的copyOf方法

    int []arr2= Arrays.copyOf(arr,arr.length);
        arr2[5]=0;
        for(int x:arr)
        {
            System.out.println(x);
        }
    

    我们可以发现,编辑拷贝后的数组不会对原先数组造成改变。Arrays.copyOf(arr,new_array.length)中的new_array.length为新数组长度,当长度大于原数组时,如果是数值型,额外的部分会赋值为0,如果时boolean型,会被复制为false,如果是对象数组,则会被赋值为null。

    5.命令行参数

    Java主程序入口总是Public static void main(String [] args){ },这个传入main函数的,字符串args到底是什么?其实是我们用cmd命令行允许Java类时候传入的参数,Java Message -g cruel world此时的args[0]="-g"、args[1]="cruel "、args[2]="world"。

    6.数组排序

    Arrays类中有对数组排序的方法,Arrays.sort(a)这个方法使用了优化的快速排序算法。

    int []arr={12124,42,33,2,42545,56,324,543,52,236,43,6,7,8,67,78};
        Arrays.sort(arr);
        for(int x:arr)
        {
            System.out.println(x);
        }
    

    7.Arrays类的方法

    • static String toString(xxx[]a)

    将数组变成一个字符串,类似于[1,2,3,4,5]

    • static xxx[ ] copyOf( xxx[ ] arr,int num)

    创建一个新数组长度为num,并且把数组arr复制到新数组,返回就是新数组。

    • static xxx[ ] copyOfRange(xxx[ ] arr, int start ,int end)

    复制arr数组,从下标【start,end)

    • static void sort(xxx[ ]arr)

    优化的快速排序

    • static int binarySearch(xxx[ ],xxx v)

    在数组中查找v元素,找到返回下标,没有找到返回-1

    • static int binarySearch(xxx[ ],int start, int end,xxx v )

    在数组[start,end)范围中查找v,找到返回下标,没找到返回-1

    • static void fill(xxx[ ] ,xxx v)

    将数组中所有的元素都设为v

    • static boolean equals(xxx[ ]a,xxx[ ] b)

    当数组a,b大小完全相同,且里面的元素对应相同时,返回True

  • 相关阅读:
    快速排序算法
    DirectX9(翻译):介绍
    奇葩的面试题
    新博客
    OpenCV2:幼儿园篇 第八章 视频操作
    编程规范:位运算
    编程规范:allocator
    深浅copy和浅copy
    模块和包
    递归函数
  • 原文地址:https://www.cnblogs.com/cwstd/p/13941663.html
Copyright © 2011-2022 走看看