• Java基础之数组


    数组

    所谓数组(array),就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,以便统一管理他们,然后用编号区分他们,这个名字称为数组名,编号称为下标或索引(index)。组成数组的各个变量称为数组的元素(element)。数组中元素的个数称为数组的长度(length)。

    数组的特点:

    1、数组的长度一旦确定就不能修改

    2、创建数组时会在内存中开辟一整块连续的空间。

    3、存取元素的速度快,因为可以通过[下标],直接定位到任意一个元素。

    数组的定义

    方式一:静态初始化

    数据类型[] 数组名 = {元素1,元素2,元素3...};//必须在一个语句中完成,不能分开两个语句写
    
    int[] arr = {1,2,3,4,5};//正确
    
    int[] arr;
    arr = {1,2,3,4,5};//错误
    
    数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
    或
    数据类型[] 数组名;
    数组名 = new 数据类型[]{元素1,元素2,元素3...};
    
    int[] arr = new int[]{1,2,3,4,5};//正确
    
    int[] arr;
    arr = new int[]{1,2,3,4,5};//正确
    
    int[] arr = new int[5]{1,2,3,4,5};//错误的,后面有{}指定元素列表,就不需要在[长度]指定长度。
    

    方式二:动态初始化

     数组存储的元素的数据类型[] 数组名字 = new 数组存储的元素的数据类型[长度];
     
      或
    
     数组存储的数据类型[] 数组名字;
     数组名字 = new 数组存储的数据类型[长度];
    

    数组定义格式详解:

    • 数组存储的元素的数据类型: 创建的数组容器可以存储什么数据类型的数据。

    • 元素的类型可以是任意的Java的数据类型。例如:int, String, Student等

    • [] : 表示数组。

    • 数组名字:为定义的数组起个变量名,满足标识符规范,可以使用名字操作数组。

    • new:关键字,创建数组使用的关键字。因为数组本身是引用数据类型,所以要用new创建数组对象。

    • [长度]:数组的长度,表示数组容器中可以存储多少个元素。

    • 注意:数组有定长特性,长度一旦指定,不可更改。

    数组元素的访问

    • 索引: 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。

    • 索引范围:[0, 数组的长度-1]

      

    索引访问数组中的元素:

    • 数组名[索引]=数值,为数组中的元素赋值

    • 变量=数组名[索引],获取出数组中的元素

    数组的遍历

    • 数组的长度属性: 每个数组都具有长度,而且是固定的,Java中赋予了数组的一个属性,可以获取到数组的长度,语句为:数组名.length ,属性length的执行结果是数组的长度,int类型结果。由次可以推断出,数组的最大索引值为数组名.length-1

    • 数组遍历: 就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。

    数组默认元素

      

     数组扩容 

    public class Test1{
    	public static void main(String[] args){
    		int[] arrs={2,3,4,5};
    		int num=6;
    		//对数组进行扩容
    		//1. 新建一个新数组(长度要比原来要长)
    		int[] newArrs=new int[arrs.length+1];
    		//2. 将原数组中的数据复制到新数组
    		for(int i=0;i<arrs.length;i++){
    			newArrs[i]=arrs[i];
    		}
    		//3. 将新数组的地址赋给arrs
    		arrs=newArrs;
    		//对arrs进行新增数据6
    		arrs[4]=6;
    		
    		//查看数据
    		for(int i=0;i<arrs.length;i++){
    			System.out.println(arrs[i]);
    		}
    	}
    }

    二维数组的声明

    //推荐
    元素的数据类型[][] 二维数组的名称;
    
    //不推荐
    元素的数据类型  二维数组名[][];
    //不推荐
    元素的数据类型[]  二维数组名[];
    

    二维数组的初始化

     静态初始化

    元素的数据类型[][] 二维数组名 = new 元素的数据类型[][]{
    			{元素1,元素2,元素3 。。。}, 
    			{第二行的值列表},
    			...
    			{第n行的值列表}
    		};
    
    元素的数据类型[][] 二维数组名;
    二维数组名 = new 元素的数据类型[][]{
    			{元素1,元素2,元素3 。。。}, 
    			{第二行的值列表},
    			...
    			{第n行的值列表}
    		};
    		
    //以下格式要求声明与静态初始化必须一起完成
    元素的数据类型[][] 二维数组的名称 = {
    			{元素1,元素2,元素3 。。。}, 
    			{第二行的值列表},
    			...
    			{第n行的值列表}
    		};
    

    动态初始化(规则二维表:每一行的列数是相同的)

    //(1)确定行数和列数
    元素的数据类型[][] 二维数组名 = new 元素的数据类型[m][n];
    	m:表示这个二维数组有多少个一维数组。或者说一共二维表有几行
    	n:表示每一个一维数组的元素有多少个。或者说每一行共有一个单元格
    
    //此时创建完数组,行数、列数确定,而且元素也都有默认值
    
    //(2)再为元素赋新值
    二维数组名[行下标][列下标] = 值;
    

     

    动态初始化(不规则:每一行的列数可能不一样)

     

    //(1)先确定总行数
    元素的数据类型[][] 二维数组名 = new 元素的数据类型[总行数][];
    
    //此时只是确定了总行数,每一行里面现在是null
    
    //(2)再确定每一行的列数,创建每一行的一维数组
    二维数组名[行下标] = new 元素的数据类型[该行的总列数];
    
    //此时已经new完的行的元素就有默认值了,没有new的行还是null
    
    //(3)再为元素赋值
    二维数组名[行下标][列下标] = 值; 

    二维数组的遍历

    for(int i=0; i<二维数组名.length; i++){
        for(int j=0; j<二维数组名[i].length; j++){
            System.out.print(二维数组名[i][j]);
        }
        System.out.println();
    }
    

      

      

     

      

    本文为原创文章,转载请标明出处
  • 相关阅读:
    var type = $('#<%=DropDownListRateType.ClientID %>').val();DropDownListRateType.ClientID是什么意思
    通过代码理解Asp.net4中的几种ClientIDMode设置.
    left join right join inner join 详解
    T-SQL查询处理执行顺序(一)
    Tsql查询执行顺序(二)
    【转】"超时时间已到。在操作完成之前超时时间已过或服务器未响应"的解决方法
    【转】ibatis 中使用select top #pagesize# * from tablename
    最近找到的一些分页优化的方法
    看懂SqlServer查询计划
    java中的数据结构
  • 原文地址:https://www.cnblogs.com/harden13/p/14471804.html
Copyright © 2020-2023  润新知