zoukankan      html  css  js  c++  java
  • 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();
    }
    

      

      

     

      

    本文为原创文章,转载请标明出处
  • 相关阅读:
    PAT 解题报告 1009. Product of Polynomials (25)
    PAT 解题报告 1007. Maximum Subsequence Sum (25)
    PAT 解题报告 1003. Emergency (25)
    PAT 解题报告 1004. Counting Leaves (30)
    【转】DataSource高级应用
    tomcat下jndi配置
    java中DriverManager跟DataSource获取getConnection有什么不同?
    理解JDBC和JNDI
    JDBC
    Dive into python 实例学python (2) —— 自省,apihelper
  • 原文地址:https://www.cnblogs.com/harden13/p/14471804.html
Copyright © 2011-2022 走看看