zoukankan      html  css  js  c++  java
  • 一、Java语言基础(4)_方法和数组——数组

    2018-04-25

    不悔梦归处,只恨未尽心

     

    数组

     

    一、一维数组

     

      

     

    1. 数组的含义:具有相同类型的多个变量按有序形式组织起来的数据形式。(数组是用来存储固定大小的同类型元素。)
    2. 数组的定义:

        方式1(推荐使用):数组元素类型[] 数组名称;  如:int[] ages;  (可以把 int[] 看成一个整体,看成一种数据类型,int类型的数组)

        方式2:数组元素类型 数组名称[];  如:int ages[];

        数组必须初始化才能使用,因为初始化表示在内存存中分配空间。

     

      3.数组的初始化:

        数组是定长的:一旦初始化完成,数组的长度(数组元素个数)就固定了,不能改变。如果需要更改,只能重新初始化。

       

        

     

        

      • 静态初始化

           由程序员为每一个数组元素设置初始值,而数组的长度由系统自动分配

           语法:数组元素类型[] 数组名 = new 数组元素类型[]{元素1,元素2,元素3,...};  new关键字:在堆空间开辟一块内存区域,用来存储数据。

              举例:int[] num = new int[]{1,3,5,7,9};  

              简单写法(必须申明的同时并初始化,不能先声明后初始化):int[] num = {1,3,5,7,9};

      • 动态初始化   

          由程序员设置数组元素个数(数组长度),而每一个数组元素的初始值由系统决定。        

           语法:数组元素类型[] 数组名 = new 数组元素类型[length];      

           举例:int[] num = new int[100];

     

      4.静态初始化内存分析

      

     

      5.动态初始化内存分析

      

     

      6.数组的基本操作

      • 获取数组元素

          元素类型 变量 = 数组名[index];  index表示索引

      • 设置元素

          数组名[index] = 值;

      • 遍历数组

           建议使用for循环遍历

      • 数组长度

           int num = 数组名.length;  (length是属性,不是方法)

      • 索引范围  

           [0,length-1]  从0开始,逐一递增

     

    数组基本操作的代码:

     1 //数组的基本操作
     2 
     3 class ArrayDemo
     4 {
     5     public static void main(String[] args){
     6 
     7         int[] num1 = new int[]{1,3,5,7,9};
     8 
     9         System.out.println("数组的长度=" + num1.length);
    10         System.out.println("数组第一个元素=" + num1[0]);//获取数组元素
    11 
    12         //修改(设置)num1数组的第一个元素
    13         num1[0] = 100;
    14         System.out.println("数组第一个元素=" + num1[0]);//获取数组元素
    15 
    16         System.out.println("----------------------------");
    17 
    18         //遍历数组
    19         System.out.println("数组第一个元素=" + num1[0]);
    20         System.out.println("数组第二个元素=" + num1[1]);
    21         System.out.println("数组第三个元素=" + num1[2]);
    22         System.out.println("数组第四个元素=" + num1[3]);
    23         System.out.println("数组第五个元素=" + num1[4]);
    24 
    25         System.out.println("----------------------------");
    26 
    27         //使用for循环遍历数组
    28         for(int index = 0; index < num1.length; index++){
    29             System.out.println(num1[index]);
    30         }
    31      }
    32 }

    输出结果:

      

      7. 操作数组常见异常

      • NullPointerException:空指针异常(空引用异常)  

          当数组没有初始化,就直接操作数组,就会出现空指针异常  

          如: int[] bs = null;

            System.out.println(bs.length);  

      • ArrayIndexOutOfBoundsException:数组的索引越界异常

          如: int[] a = {100};

             System.out.println(a[-1]);

       

      8.获取数组最大和最小元素

        输出结果:10

     1 class ArrayDemo2 
     2 {
     3 
     4     //获取数组最大元素
     5     public static int getMax(int[] num){
     6         int max = num[0];//假设第一个元素是最大值
     7         for(int index = 1; index < num.length; index++){
     8             if(num[index] > max){
     9                 max = num[index];    //把最大值存储在max变量里
    10             }
    11         }
    12         return max;
    13 
    14     }
    15 
    16     public static void main(String[] args) 
    17     {
    18         
    19         int[] num = new int[]{-3,0,2,1,10};
    20 
    21         int max = ArrayDemo2.getMax(num);
    22         System.out.println(max);
    23     }
    24 }

      9.按格式打印数组元素

     1 class ArrayDemo2 
     2 {
     3 
     4 
     5 
     6     public static void main(String[] args) 
     7     {
     8         
     9         
    10         String[] arr = {"A","B","C","D","E"};
    11         ArrayDemo2.printArrary(arr);
    12     }
    13     static void printArrary(String[] arr){
    14         //如果数组为空,则输出null
    15         if(arr == null){
    16             System.out.println("null");
    17             return;    //结束方法
    18         }
    19 
    20         String ret = "[";
    21         //遍历数组
    22         for(int index = 0; index < arr.length; index++){
    23             ret = ret + arr[index];
    24             //如果当前index不是最后一个索引,则拼接“,”
    25             if(index != arr.length-1){
    26                 ret = ret + ", ";
    27             }
    28         }
    29         ret = ret + "]";
    30     
    31     System.out.println(ret);
    32     }
    33 }

    输出结果:

      10.逆序排列数组元素

     1 class ArrayDemo2 
     2 {
     3 
     4     public static void main(String[] args) 
     5     {    
     6         String[] arr = {"A","B","C","D","E"};
     7         ArrayDemo2.printArrary(arr);
     8         String[] newArr = ArrayDemo2.reverse(arr);
     9         ArrayDemo2.printArrary(newArr);
    10     }
    11     static void printArrary(String[] arr){
    12          //如果数组为空,则输出null
    13          if(arr == null){
    14              System.out.println("null");
    15              return;    //结束方法
    16          }
    17  
    18          String ret = "[";
    19          //遍历数组
    20         for(int index = 0; index < arr.length; index++){
    21              ret = ret + arr[index];
    22              //如果当前index不是最后一个索引,则拼接“,”
    23              if(index != arr.length-1){
    24                  ret = ret + ", ";
    25              }
    26          }
    27          ret = ret + "]";
    28      
    29      System.out.println(ret);
    30     }
    31 
    32     static String[] reverse(String[] oldArr){
    33         
    34         //创建一个新数组,用来存放就数组逆序之后的元素  
    35         String[] newArr = new String[oldArr.length];
    36         for(int index = oldArr.length-1; index >= 0; index--){
    37             newArr[oldArr.length-1-index] = oldArr[index];
    38         }
    39         return newArr;
    40     }
    41 }

     输出结果:

       11.元素出现索引(线性搜索)

    class ArraySearchDemo 
    {
        public static void main(String[] args) 
        {
            int[] arr = {10,20,30,10,50,-30,10};
    
            int beginIndex = ArraySearchDemo.indexOf(arr,10);
            System.out.println(beginIndex);
    
            int endIndex = ArraySearchDemo.lastIndexOf(arr,10);
            System.out.println(endIndex);
        }
        /*
            查询key元素在arr数组中第一次出现的位置
            参数:
                arr:从哪一个数组中去做查询
                key:当前去查询的元素
            返回:如果key存在于arr数组中,则返回第一次出现的索引
                如果key不存在于arr数组中,则返回-1
        */
        static int indexOf(int[] arr,int key){
            for(int index = 0; index < arr.length; index++){
                if(arr[index] == key){
                    return index;
                }
            }
            return -1;
        }
        //获取key参数在arr数组中最后出现的索引位置
        static int lastIndexOf(int[] arr,int key){
            for(int index = arr.length-1; index >= 0; index--){
                if(arr[index] == key){
                    return index;
                }
            }
            return -1;
        }
    }

    输出结果:

        

     

  • 相关阅读:
    iOS中使用nil NULL NSNULL的区别
    Xcode常用快捷键总结
    (求租仓库)navigationController .navigationBar 的属性设置
    imageNamed 与 initWithContentsOfFile 区别
    iOS-Senior10-多线程(子线程创建)
    iOS-setValue和setObject的区别
    iOS-Senior8-网络之进阶
    iOS-Senior7-数据请求
    iOS-Senior6-数据解析(JSON)
    iOS-Senior6-数据解析(XML)
  • 原文地址:https://www.cnblogs.com/sunNoI/p/8942465.html
Copyright © 2011-2022 走看看