首页 > 其他分享 >数组

数组

时间:2022-10-16 16:46:18浏览次数:42  
标签:初始化 int System 数组 println new

三、数组

3.1 数组理解

  1. 数组属于 引用数据类型 的变量。数组的元素,既可以是 基本数据类型 ,也可以是 引用数据类型。
  2. 创建数组对象会在内存中开辟一整块连续的空间。
  3. 数组的长度一旦确定,就不能修改。

3.2 一维数组

3.2.1 数组初始化

1、静态初始化(数组的初始化和数组元素的赋值操作同时进行)

int[] ids;
ids = new int[]{1001,1002,1003,1004;

2、动态初始化(数组的初始化和数组元素的赋值操作分开进行)

String[] names = new String[5];

Java中数组角标从 0 开始,到 length-1 结束

3.2.2 数组元素的默认初始化值

int[] arr= new int[4];
for(int i=0;i< arr.length;i++){
	System.out.println(arr[i]);
}
//输出:0 0 0 0
数组元素类型 初始化值
基本数据类型
整型 0
浮点型 0.0
char型 0(数字) 而非 '0'(字符)
boolean型 false
引用数据类型 null(关键字)
String null

3.2.3 数组内存结构

  • 栈(stack):局部变量(方法里的变量)

  • 堆(heap):new出来的结构(对象、数组)

3.3 多维数组

3.3.1 二维数组的初始化

//一维数组初始化
int[] arr = new int[] {1,2,3};
//二维数组——静态初始化
int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
//二维数组——动态初始化1
String[][] arr2 = new String[3][2];
//二维数组——动态初始化2
String[][] arr3 = new String[3][];
//要么赋值,要么规定长度

//也是正确写法(类型推断)
int[] arr4[] = {{1,2},{3,4},{5,6,7}};

//数组长度
System.out.println(arr1.length);//3
System.out.println(arr1[1].length);//2

System.out.println(arr1[0][1]);//2
System.out.println(arr2[1][1]);//null
System.out.println(arr3[1][0]);//空指针异常

3.3.2 二维数组默认初始化值

int[][] arr = new int[4][3];
System.out.println(arr[0]);//[@16进制地址值
System.out.println(arr[0][0]);//0
System.out.println(arr);//[[@16进制地址值

针对初始化方式一:int[][] arr= new int[4][3];

​ 外层元素初始化值:地址值

​ 内层元素初始化值:与一位数组初始化值相同

针对初始化方式二:int[][] arr = new int[4][];

​ 外层元素初始化值:null

​ 内层元素初始化值:不能调用,否则报错(空指针异常)

3.4 数组Arrays工具类使用

方法 功能 底层实现
boolean equals(int[]a , int[]b) 判等 地址、非空、长度
String toString(int[] a) 输出数组 遍历
void fill(int[] a , int val) 替换 全部替换
void sort(int[] a) 对数组排序 快排
int binarySearch(int[] a , int k) 找值为key索引 ≥0:找到 <0:未找到

3.5 数组常见异常

3.5.1 数组角标越界异常:ArrayIndexOutOfBoundsExcetion

int[] arr= new int[]{1,2,3,4,5};
 for(int i=0;i<=arr.length;i++){
 	System.out.println(arr[i]);
 }
 System.out.println(arr[-2]);

3.5.2 空指针异常:NullPointerException

情况一:

int[] arr1 = new int[] {1,2,3};
arr1 = null;
System.out.println(arr1[0]);

情况二:

int[][] arr2 = new int[4][];//内层没有初始化
System.out.println(arr2[0][0]);

情况三:

String[] arr3 = new String[]{"AA","BB","CC"};
arr3[0] = null;
System.out.println(arr3[0].toString());

标签:初始化,int,System,数组,println,new
From: https://www.cnblogs.com/yuqianer/p/16796479.html

相关文章

  • 数据结构-串、数组、广义表
    @目录XDOJ0224矩阵相乘XDOJ0250螺旋填数XDOJ0257公共子串XDOJ0287求矩阵中的马鞍点XDOJ0288求一个顺序串的next函数值XDOJ0296中心对称的字符串XDOJ0309矩阵加法运......
  • 1441. 用栈操作构建数组
    本题非常简单,一个简单的模拟题解题思路:如果两个相邻数字相差不为1,那么对两个数字的差值减1进行“Push”和“Pop”如果两个相邻数字相差不1,那么直接“Push”即可......
  • 数组去重方法
    1. 使用es6set方法[...newSet(arr)]letarr=[1,2,3,4,3,2,3,4,6,7,6];letunique=(arr)=>[...newSet(arr)];unique(arr);//[1,2,3,4,6,7] 2.inde......
  • 【leetcode_C语言_数组_day2】977.有序数组的平方&&209.长度最小的子数组&&59. 螺旋矩
    977.有序数组的平方1.题目给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例1:输入:nums=[-4,-1,0,3,10]......
  • C语言之字符串与字符数组的区别
     1.字符串的定义:(1)单个字符:charch='i';//单个字符的定义(2)一维字符串数组:chararr[]="love";(这种方法定义的一维字符串数组必须赋值)chararr[4];(想内存申请创建可以......
  • 748. 数组的右下半部分
    文章目录​​Question​​​​Ideas​​​​Code​​Question输入一个二维数组M[12][12],根据输入的要求,求出二维数组的右下半部分元素的平均值或元素的和。右下半部分是指......
  • 747. 数组的左上半部分
    文章目录​​Question​​​​Ideas​​​​Code​​Question输入一个二维数组M[12][12],根据输入的要求,求出二维数组的左上半部分元素的平均值或元素的和。左上半部分是指......
  • javascript 数组
    javascript数组文章目录​​javascript数组​​​​1.简介​​​​2.创建数组​​​​3.访问数组​​​​4.数组方法和属性​​​​5.创建新方法​​​​6.实例​​......
  • 1441. 用栈操作构建数组
    1441.用栈操作构建数组给你一个数组target和一个整数n。每次迭代,需要从 list={1,2,3...,n}中依次读取一个数字。请使用下述操作来构建目标数组targ......
  • DS | 一维数组 & 二维数组 & 对称矩阵 & 三角矩阵 & 三对角矩阵地址的计算
    一维数组的地址计算设每个元素的大小是\(size\),首元素的地址是\(a[1]\),则a[i]=a[1]+(i-1)*size若首元素的地址是\(a[0]\)则a[i]=a[0]+i*size二维数组的地......