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

    1. 使用用Java中的数组,必须要经过声明数组和分配内存给该数组两个步骤(定义时就初始化除外)。

    int a[] = null;
    a = new int[10];
    
    int[] a = null;
    a = new int[10];
    
    int a[] = new int[10];

    其中 null 表示的是引用类型的默认值,数组是引用类型,null表示目前还没有任何指向的内存空间。

    2. Java中获取数组的长度可以使用 <数组名>.length 的形式,若是多维数组,获取下一维数组的长度可以使用 <数组名[i]>.length 的形式。

    3. Java中的数组也可以静态初始化

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

    4. Java中的二维数组

    int b[][];
    b = new int[4][3]; //4行3列
    
    int b[][] = new int[4][3];

    5. Java中的二维数组的初始化

    int b[][] = {{row 1}, {row 2}, {row n}};

    6. 二维数组Demo

    public class Array {
        public static void main(String args[]) {
            int score[][] = {{80, 90}, {10, 20, 30, 40, 50}, {60, 70, 100}};
            for (int i = 0; i < score.length; i++) {
                for (int j = 0; j < score[i].length; j++) { //注意这里的score[i].length
                    System.out.print(score[i][j] + "	");
                }
                System.out.println("");
            }
        }
    }
    
    # java Array 
    80    90    
    10    20    30    40    50    
    60    70    100    

    7. Java中的多维数组

    int c[][][] = new int[3][4][5]; //更多维依次类推

    8. Java中的数组传递与返回

    public class Array {
        public static void main(String args[]) {
            int score[]= {10, 20, 30, 40, 50, 60};
            int tmp[] = changeScore(score);
            for (int i = 0; i < score.length; i++) {
                System.out.print(score[i] + "	");
            }
            System.out.println("");
    
            for (int i = 0; i < tmp.length; i++) {
                System.out.print(tmp[i] + "	");
            }
            System.out.println("");
        }
    
        public static int[] changeScore(int a[]) {
            for (int i = 0; i < a.length; i++) {
                a[i] = 100;
            }
            return a;
        }
    }
    
    # java Array 
    100    100    100    100    100    100    
    100    100    100    100    100    100    

    Java中的数组不用传长度参数了,自带长度属性。应该也不会出现像C中的传参退化的表现。

    直接在函数内定义并初始化数组后返回这个数组,在Java代码中应该也是安全的,毕竟数组元素都在堆空间上,和C有较大区别。

    public class Array {
        public static void main(String args[]) {
            int dst[] = func();
            for (int i = 0; i < dst.length; i++) {
                System.out.print(dst[i] + "	");
            }
            System.out.println("");
        }
    
        public static int[] func() {
            int src[]= {10, 20, 30, 40, 50, 60};
            return src;
        }
    }
    
    # java Array 
    10    20    30    40    50    60

    9. Java类库中完成数组排序与拷贝的方法

    public class Array {
        public static void main(String args[]) {
            int score[]= {10, 20, 60, 30, 50, 40};
            java.util.Arrays.sort(score); //不需要import直接可以使用
            for (int i = 0; i < score.length; i++) {
                System.out.print(score[i] + "	");
            }
            System.out.println("");
        }
    }
    
    # java Array 
    10    20    30    40    50    60
    public class Array {
        public static void main(String args[]) {
            int src[]= {10, 20, 30, 40, 50, 60};
            int dst[]= {11, 22, 33, 44, 55, 66};
            System.arraycopy(src, 1, dst, 2, 4); //将src的下标1开始拷贝4个元素到dst下标为4的位置
            for (int i = 0; i < dst.length; i++) {
                System.out.print(dst[i] + "	");
            }
            System.out.println("");
        }
    }
    
    # java Array 
    11    22    20    30    40    50    

    Java为开发者提供了各种各样的支持,这些类库在 Java Doc 中可以查找到。

    10. Java新特性——可变参数

    public class Array {
        public static void main(String args[]) {
            func(10, 20);
            func(10, 20, 30, 40);
        }
    
        public static void func(int... arg) { //(<type>... <参数列表名>)
            for (int i = 0; i < arg.length; i++) {
                System.out.print(arg[i] + "	");
            }
            System.out.println("");
        }
    }
    
    # java Array 
    10    20    
    10    20    30    40    

    和传数组同样的效果,只不过传参方式不同。

    11. Java新特性——foreach输出

    public class Array {
        public static void main(String args[]) {
            int src[]= {10, 20, 30, 40, 50, 60};
            func(src);
        }
    
        public static void func(int arg[]) {
            for (int value : arg) {
                System.out.print(value + "	"); //此时直接是值,而不是下标了
            }
            System.out.println("");
        }
    }
    
    # java Array 
    10    20    30    40    50    60    

    补充:禁止在 foreach 循环里面对元素进行 remove/add 操作,因为可能导致崩溃现象。remove 元素必须使用 Iterator 方式,如果是并发操作,需要对 Iterator 对象加锁。

    参考《Java开发实战经典》

  • 相关阅读:
    Hologres如何支持亿级用户UV计算
    飞猪基于 Serverless 的云+端实践与思考
    高德打车构建可观测性系统实践
    程序员写好技术文章的几点小技巧
    配置审计(Config)变配报警设置
    进入中国内地第31年的麦当劳 ,为什么还能不断吸引新消费人群?
    OceanBase再破纪录!核心成员陈萌萌:坚持HTAP就是坚持我们做数据库的初心
    找出有序数组中缺失的数字
    删除值重复的结点
    想交链表----若有缘 必相见
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/15355104.html
Copyright © 2011-2022 走看看