基础篇——数组

写代码的四点:
     1.明确需求。要做什么?
     2.分析思路。要怎么做?(1,2,3……)
     3.确定步骤。每一个思路要用到哪些语句、方法和对象。
     4.代码实现。用具体的语言代码将思路实现出来。
 
学习新技术的四点:
     1.该技术是什么?
     2.该技术有什么特点?(使用需注意的方面)
     3.该技术怎么使用?(写Demo)
     4.该技术什么时候用?(在Project中的使用场景 )
 
----------------------早计划,早准备,早完成。-------------------------

数组的概述:

        数组是同一种类型数据的集合,是一个容器,用来存储固定大小的同类元素。它可以自动给数组中的元素从0开始编号,方便操作。
        数组的元素是通过索引访问的,数组索引从0开始,所以索引值从0到元素个数 -1;
        数组可以作为函数的参数和函数的返回值使用。
        数组可以通过下标来引用。Java对数组元素要进行越界检查以保证安全性。
        数组通过length属性来指明它的长度。
 
声明数组变量:
        格式1:元素类型【】 元素名;(推荐)
int[] arrayInt ;
        格式2:元素类型    元素名【】;
int arrayInt[] ;
 
一维数组的初始化:
        格式1:元素类型【】  元素名 = new  元素类型【元素个数或数组长度】;
                    动态初始化,可以在声明以后进行初始化。
int [] arrayInt = new int [ 3 ] ;
arrayInt[ 0 ] = 1 ;
arrayInt[ 1 ] = 2 ;
arrayInt[ 2 ] = 3 ;
        格式2:元素类型【】  元素名 = {元素0,元素1,......};
                    静态初始化,在声明数组的同时进行初始化。
int[] arrayInt = { 9 , 3 , 7} ;
 
二维数组的初始化:
        格式1:元素类型【】【】  元素名  = { { 元素00,元素01 } , { 元素10,元素11,元素12},......};
int[][] arrayTwoInt = {{ 3 , 2} , { 11 , 22} , { 8 , 7 , 4}} ;
                    解释:定义了名称为arrayTwoInt的二维数组,二维数组中有3个一维数组,
                              前两个一维数组中有2个元素,最后一个一维数组中有3个元素。
                              数组空间不是连续分配,所以不要求二维数组中的每一维的大小相同。
        格式2:元素类型【】【】  元素名  = new  元素类型【一维数组个数】【一维数组的元素个数】;
int[][] arrayTwoInt = new int[ 3][ 2] ;
                    解释:定义了名称为arrayTwoInt的二维数组,二维数组中有3个一维数组,
                              每一个一维数组中有2个元素。
        格式3:元素类型【】【】  元素名  = new  元素类型【一维数组个数】【】;
int[][] arrayTwoInt = new int[ 3][] ;
arrayTwoInt[ 0] = new int[ 3] ;
arrayTwoInt[ 1] = new int[ 2] ;
arrayTwoInt[ 2] = new int[ 1] ;
                    解释:定义了名称为arrayTwoInt的二维数组,二维数组中有3个一维数组,
                              每个一维数组都是默认初始化值null,可以分别对三个一维数组进行初始化,
                              arrayTwoInt[0]  =  new int[3];
                              arrayTwoInt[1]  =  new int[2];
                              arrayTwoInt[2]  =  new int[1];
 
 
多维数组:依照二维数组,以此类推。
 
 

数组的遍历(两种方式):

        1.通过for循环遍历数组,以获取数组中的每一个元素。
int[] arrayInt = { 9 , 3 , 7} ;
for ( int i = 0 ; i < arrayInt. length ; i++) {
        LogUtil. e( "输出数组中的每一个元素" , "第" + i + "个元素:" + arrayInt[i]) ;
}
        
        2.“增强”for循环,专门用来遍历数组。
int[] arrayInt = { 9 , 3 , 7} ;
for ( int element : arrayInt) {
        LogUtil. e( "输出数组中的每一个元素" , element + "") ;
}
 
 

Arrays类:

        java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。
 
包含以下功能:
        1.数组赋值:通过fill方法;
int [] ints = new int [ 5 ] ;
Arrays. fill (ints , 4 ) ;
for ( int i = 0 ; i < ints. length ; i++) {
        LogUtil. e ( "填充数组:Arrays.fill(array, 4)" , ints[i] + "" ) ;
}
Arrays. fill (ints , 2 , 4 , 8 ) ;//数组,脚标起始点,脚标终止点(包含头不包含尾),填充的值
for ( int i = 0 ; i < ints. length ; i++) {
        LogUtil. e ( "将数组的第2和第3个元素赋值为8:Arrays.fill(array, 2, 4, 8)" , ints[i] + "" ) ;
}
        
        2.数组排序:通过sort方法(升序);
int[] array = { 19 , 5 , 11 , 34 , 23 , 9 , 7} ;
Arrays. sort(array , 2 , 7) ; //数组,脚标起始点,脚标终止点(包含头不包含尾)
for ( int i = 0 ; i < array. length ; i++) {
LogUtil. e( "对数组的第2个到第6个元素进行升序排序:Arrays.sort(array,2,7)" , array[i] + "") ;
}
Arrays. sort(array) ;
for ( int i = 0 ; i < array. length ; i++) {
LogUtil. e( "对整个数组进行升序排序:Arrays.sort(array)" , array[i] + "") ;
}
        
        3.比较数组:通过equals方法比较数组中元素值是否相等;
int[] array1 = { 19 , 5 , 11 , 34 , 23 , 9 , 7} ;
int[] array2 = { 0 , 5 , 11 , 34 , 23 , 9 , 7} ;
Arrays. equals(array1 , array2) ;
LogUtil. e( "比较数组元素是否相等:Arrays.equals(array1, array2)" , Arrays. equals(array1 , array2) + "") ;
int[] array3 = array2.clone() ;
Arrays. equals(array2 , array3) ;
LogUtil. e( "克隆后数组元素是否相等:Arrays.equals(array2, array3)" , Arrays. equals(array2 , array3) + "") ;
        
        4.查找数组元素:通过binarySearch方法对排序好的数组进行二分查找法操作。
int[] array = { 19 , 5 , 11 , 34 , 23 , 9 , 7} ;
//使用二分搜索算法查找指定元素所在的脚标(必须是排序好的,否则结果不正确)
Arrays. sort(array) ;
Arrays. binarySearch(array , 7) ;
LogUtil. e( "元素7在array中的位置:Arrays.binarySearch(array, 7)" , Arrays. binarySearch(array , 7) + "") ;
Arrays. binarySearch(array , 100) ; //如果不存在就返回负数-8(-(数组的长度 + 1))
LogUtil. e( "元素100在array中的位置:Arrays.binarySearch(array, 100)" , Arrays. binarySearch(array , 100) + "") ;
           
        5.将多种类型的数组转成String类型字符串:
int[] array = { 19 , 5 , 11 , 34 , 23 , 9 , 7} ;
boolean[] array1 = { true, false} ;
String s = Arrays. toString(array1) ;
LogUtil. e( "将多种类型的数组转成String类型字符串" , s) ;
 

注意:

        1.内存一旦分配不能改变,所以说静态数组一旦被声明,它的容量就固定了,不容改变。
            因此在声明数组时,一定要考虑数组的最大容量,防止容量不够的现象。
        2.如果想要在运行程序时改变容量,就需要用到数组列表(ArrayList,也称为动态数组)或
            向量(Vector)。

---------------------------------------------------------------------------------------------------------------------------

早计划,早准备,早完成。 欢迎关注!交流!Star!

GitHub:https://github.com/wangyang0313

微信公众号:一个灵活的胖子MrWang

简书:https://www.jianshu.com/u/e5e733d79b96  

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值