首页 > 其他分享 >数组

数组

时间:2023-01-04 13:24:08浏览次数:30  
标签:初始化 int 元素 数组 println new

  • 数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理
  • 数组的常见概念:
    • 数组名
    • 下标(或索引)
    • 元素
    • 数组的长度
  • 数组的特点:
    • 数组是有序排列的
    • 数组属于引用数据类型的变量。数组的元素可以是基本数据类型,也可以是引用数据类型
    • 创建数组对象会在内存中开辟一整块连续的空间
    • 数组的长度一旦确定,就不能修改
  • 数组的分类:
    • 按维度:一维数组、二维数组...
    • 按照数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组
  • 一维数组的使用
    • 一维数组的声明和初始化
      int[] ids;//声明
      //1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进行
      ids =new int[]{1001,1002,1003,1004};
      //1.2动态初始化数组的初始化和数组元素的赋值操作分开进行
      String[] names = new String[5];
      //总结:数组一旦初始化完成,其长度就确定了。
      
    • 如何调用数组指定位置的元素
    //数组的角标(或索引)从0开始的,到数组的长度-1结束
    	names[0]="张三";
    	names[1]="李四";
    	names[2]="校长";
    	names[3]="王五";
    	names[4]="小明";
    	//names[5]="赵六";//数越界异常
    
    • 如何获取数组的长度
    //如何获取数组的长度
    	//属性:length
    	System.out.println(names.length);//5
    
    • 如何遍历数组
    //如何遍历数组
    	for(int i=0;i<names.length;i++){
    		System.out.println(names[i]);
    	}
    
    • 数组元素的默认初始化值
      • 数组元素是整型:0
      • 数组元素是浮点型:0.0
      • 数组元素是char类型:0或'\u0000',不是'0'
      • 数组元素是boolean类型:false
      • 数组元素是引用类型:null
    //数组元素的默认初始化值
    	int[] arr = new int[4];
    	for(int i=0;i<arr.length;i++){
    		System.out.println(i);//0 0 0 0 
    	}
    	float[] arr2 = new float[5];
    	for(int i=0;i<arr2.length;i++){
    		System.out.println(arr2[i]);//0.0 
    	}
    	char[] arr3 = new char[4];
    	for(int i =0;i<arr3.length;i++){
    		System.out.println("----"+arr3[i]+"****");
    	}
    	String[] arr4  = new String[3];
    	System.out.println(arr4[0]);
    
    • 数组的内存解析
      内存的简化结构:栈(stack):局部变量;堆(heap):new出来的结构:对象数组;方法区:常量池和静态域
      把变量名和变量对应值的首地址值存储在栈区,其值存储在堆区
  • 二维数组
    理解:对于二维数组的理解,我们可以看成是一维数组array1又作为另一个一维数组array2的元素而存在。其实,从数组底层的运行机制来看,其实没有多维数组
    1. 二维数组的声明和初始化
      //静态初始化
      int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
      int[][] arr4 = {{1,2,3},{4,5},{6,7,8}};
      //动态初始化1
      String[][] arr2 = new String[3][2];
      //动态初始化2
      String[][] arr3 = new String[3][];
      
    2. 如何调用数组指定位置的元素
    	System.out.println(arr1[0][1]);//2
    	System.out.println(arr2[2][2]);//null
    	System.out.println(arr3[1][0]);//空指针异常
    
    1. 如何获取数组的长度
    	System.out.println(arr4.length);//3
    	System.out.println(arr4[0].length);//3
    	System.out.println(arr4[1].length);//2
    
    1. 如何遍历数组
    	for(int i=0;i<arr4.length;i++){
    		for(int j =0;j<arr4[i].length;i++){
    			System.out.print(arr4[i][j]);
    		}
    		System.out.println();
    	}
    
    1. 数组元素的默认初始化值、
      规定:二维数组分为外层元素的数组,内层元素的数组
      int[] arr = new int[4][3];
      外层元素:arr[0],arr[1]等
      内层元素:arr[0][0],arr[1][2]等
    int [][] = new int[4][3];
    System.out.println(arr[0]);//[I@15db9742地址值
    System.out.println(arr[0][0]);//0
    System.out.println(arr);//[[I@地址值
    
    double[][] arr3 = new double[4][];
    System.out.println(arr3[1]);//null
    System.out.println(arr3[0][1]);//空指针异常
    
    针对于初始化一:比如:int[][] arr = new int[4][3];外层元素的初始化值为:地址值。内层元素的初始化值为:与一维数组初始化情况相同
    针对于初始化方式二:比如:int[][] arr = new int[4][]外层元素的初始化值为null,内层元素的初始化值为不能调用,否则报错。
    1. 数组的内存解析

数组中常见的算法:

杨辉三角

//1.声明并初始化二维数组
		int yangHui[][] = new int[10][];
		//2.给数组元素赋值
		for(int i = 0;i<yangHui.length;i++){
			yangHui[i] = new int[i+1];
			//2.1给首末元素赋值
			yangHui[i][0]=yangHui[i][i] = 1;
			//2.2给每个元素赋值
			for(int j =1;j<yangHui[i].length-1;j++){
				yangHui[i][j]=yangHui[i-1][j-1]+yangHui[i-1][j];
			}
		}
		//3.遍历二维数组
		for(int i =0;i<yangHui.length;i++){
			for(int j =0;j<yangHui[i].length;j++){
				System.out.print(yangHui[i][j]+" ");
			}
			System.out.println();
		}

标签:初始化,int,元素,数组,println,new
From: https://www.cnblogs.com/rhy2103/p/17021819.html

相关文章

  • 数组转List的方法
    数组转List的方法:String[]s=newString[2];s[0]="abc";s[1]="qaz";方法一:Arrays.asList(s)List<String>list=Arrays.asList(s);list.add("efgk");//报错li......
  • leetcode-643. 子数组最大平均数 I
    643.子数组最大平均数I-力扣(Leetcode)滑动窗口,判断好边界条件即可funcfindMaxAverage(nums[]int,kint)float64{begin,end:=0,k-1ifend>=len(n......
  • Leetcode[LeetCode]4 两个有序数组的中位数
    上图为剑指Offer之字符串的排列,基于回溯法的思想。简单算法01数组中第二大的数02合并排序链表03链表反转04判断链表环05两个链表的首个交点06数组中出现大与一般的数07手写......
  • 3.1 数组创建的方式
    ​ JS数组创建的四种语法 <!DOCTYPEhtml><html><head><metacharset="UTF-8"><title></title><scr......
  • 3.1 数组创建的方式
    ​ JS数组创建的四种语法 <!DOCTYPEhtml><html><head><metacharset="UTF-8"><title></title><scr......
  • vue2 lodash函数27 节流的函数、防抖的函数、操作数组的一系列函数、操作对象的一
    App.vue<keep-aliveinclude="Home"><router-view/></keep-alive>routerindex.jsimportVuefrom'vue'importVueRouterfrom'vue-router'importH......
  • 稀疏数组
    稀疏数组稀疏数组是一种数据结构。需求:编写五子棋游戏中,有存盘退出和续上盘的功能。分析问题:因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据。解决:稀......
  • js 数组方法
    //定义一个数组varfruits=['香蕉','芒果','橘子','荔枝','樱桃'];//添加元素到数组的末尾,改变原数组varnewLength=fruits.push('香橙');//console.l......
  • 算法刷题 Day 6 | 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之
    哈希表理论基础建议:大家要了解哈希表的内部实现原理,哈希函数,哈希碰撞,以及常见哈希表的区别,数组,set和map。什么时候想到用哈希法,当我们遇到了要快速判断一个元素是......
  • Js中的数组去重
    1. functionunique(arr){returnArray.from(newSet(arr))}2.[...newSet(arr)]3.functionunique(arr){vararray=arr;varlen=......