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开发实战经典》

  • 相关阅读:
    【读书笔记《Android游戏编程之从零开始》】6.Android 游戏开发常用的系统控件(TabHost、ListView)
    【读书笔记《Android游戏编程之从零开始》】5.Android 游戏开发常用的系统控件(ProgressBar、Seekbar)
    【读书笔记《Android游戏编程之从零开始》】4.Android 游戏开发常用的系统控件(EditText、CheckBox、Radiobutton)
    【读书笔记《Android游戏编程之从零开始》】3.Android 游戏开发常用的系统控件(Button、Layout、ImageButton)
    【读书笔记《Android游戏编程之从零开始》】2.Hello,World!
    【读书笔记《Android游戏编程之从零开始》】1.Android 平台简介与环境搭建
    【Android Demo】通过WebService获取今日天气情况
    布局优化之ViewStub源码分析
    http2.0与http1.X的区别
    OkHttpHelper使用
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/15355104.html
Copyright © 2011-2022 走看看