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

    数组相同类型数据的有序结合。数组描述的是相同类型的若干类型,按照一定的先后顺序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问他其元素。

    数组的三个基本特点:

    1.长度确定,一旦被创建,大小不可改变。

    2.其元素必须是相同类型,不允许出现混合类型。

    3.数组类型可以是任何类型,包括基本类型和引用类型。

    数组变量属于引用类型,数组也是对象,数组中的每个元素相当于对象的成员变量。

    若声明了一个长度为10的int类型的数组,内存动态如下:

    public class TestArray {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int[] arr01=new int[10];  //创建一个长度为10(length)的int类型的数组,索引下标0~9
            String arr02[]=null;   //数组的声明方式
            /*逐赋值法*/
            arr01[0]=13;
            arr01[1]=16;
            arr01[2]=18;*/
            //arr01[12]=19; 
            //若超越索引下标,编译正确,运行会报错,数组越界ArrayIndexOutOfBoundsException:12
            /*循环初始化数组并读取元素值*/
            for(int i=0;i<arr01.length;i++){ 
                arr01[i]=10+i;
                System.out.println(arr01[i]);
            }
            User2[] arr03=new User2[3];
            arr03[0]=new User2(1706,"aa");
            arr03[1]=new User2(1707,"ab");
            arr03[2]=new User2(1708,"ac");
            for(int i=0;i<arr03.length;i++){ 
                System.out.println(arr03[i].getName());
            }
        }
    }
    class User2{
        private int id;
        private String name; 
        /*构造方法*/
        public User2(int id, String name) {
            super();
            this.id = id;
            this.name = name;
        }
        /*写get、set方法*/
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }    
    }

     

    数组的初始化方式有3种:静态初始化、动态初始化、默认初始化

                       foreach循环:用于读取数组元素的值,不能修改元素的值

    数组的复制、删除及扩容

    public class TestArrayCopy {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            testBasicCopy2();
            String s1[]={"aa","bb","cc","dd","ee"};
            String s2[]=new String[10];
            String str[]={"阿里","腾讯","美团","百度","BAT","去哪儿"};
            removeElement(str,2);
            extendRange(s1);
            System.arraycopy(s1, 2, s2, 6, 3);//将s1数组从第2个位置开始拷到s2的第6个位置
        /*Object src, int srcPos, Object dest, int destPos, int length)
          从SRC数组拷贝到dest数组;srcPos数组开始拷贝的位置.destPos目标数组位置;length代表长度
        */
            for(int i=0;i<s2.length;i++){
            System.out.println(i+":"+s2[i]);
            }
        }
        //测试从数组中删除某个元素cc(本质上还是数组的拷贝)
        public static void testBasicCopy2(){
            String s1[]={"aa","bb","cc","dd","ee"};
            //String s2[]=new String[5];
            
            System.arraycopy(s1, 3, s1, 3-1, 2);
            s1[s1.length-1]=null;
            for(int i=0;i<s1.length;i++){
                System.out.println(i+":"+s1[i]);
                }
        }
        //删除数组中指定索引位置的元素,并将原数组返回
        public static String[] removeElement(String s[],int index){
            System.arraycopy(s, index+1, s, index, s.length-index-1);
            s[s.length-1]=null;
            for(int i=0;i<s.length;i++){
                System.out.println(i+":"+s[i]);
            }
            return s;
        }
        //数组的扩容(本质上是先定义一个更大的数组,然后将原数组内容原封不动地拷贝到新数组)
        public static String[] extendRange(String[] s1){
            String ss2[]=new String[s1.length+3];
            System.arraycopy(s1, 0, ss2, 0, s1.length);
            for(String j:ss2){
                System.out.println(j);
            }
            return ss2;
        }
    }

    数组复制的参数解释:

    Array类:JDK提供的java.util.Arrays类,包含了常用的数组操作,方便我们日常开发。包含了:排序、查找、填充、打印等操作。

    打印:

     排序:

     查找:

     多维数组:可以看成以数组为元素的数组,经常使用二维数组,学习容器后,一般使用容器,二维数组用的很少。

  • 相关阅读:
    [转] Akka实战:构建REST风格的微服务
    [转] Node.js的线程和进程
    [转] Spring Integration 系统集成
    NodeJS使用SSL证书
    Tomcat SSL证书安装配置
    [转]【NODE】用WS模块创建加密的WS服务(WSS)
    [转] Spring Boot实战之Filter实现使用JWT进行接口认证
    [转] 前后端分离之JWT用户认证
    [转] 使用 Java8 Optional 的正确姿势
    [转] SpringBoot RESTful 应用中的异常处理小结
  • 原文地址:https://www.cnblogs.com/laurarararararara/p/11361031.html
Copyright © 2011-2022 走看看