一、Java语言基础(4)_方法和数组——数组
发布日期:2021-08-31 13:57:53 浏览次数:40 分类:技术文章

本文共 5723 字,大约阅读时间需要 19 分钟。

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         //如果数组为空,则输出null15         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          //如果数组为空,则输出null13          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;    }}

 

 

 

 

输出结果:

 

 

 

 

    

 

转载于:https://www.cnblogs.com/sunNoI/p/8942465.html

转载地址:https://blog.csdn.net/weixin_34077371/article/details/93178582 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C#中的集合
下一篇:servlet

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年03月26日 20时28分06秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章