Java学习笔记 04、数组与Arrays工具类

简介: Java学习笔记 04、数组与Arrays工具类

一、一维数组


基本认识

数组是引用类型,其内容可以是基本数据类型也可以是引用数据类型


声明数组:int[] ids; (内容为基本类型) String[] ids; (内容为引用类型)


其中[]位置也可以不同,int[] ids 与 int ids[] 都是允许的

初始化方式:


静态初始化:int[] ids = new []{1,2,3,4}; 或 ids = {1,2,3,4}; (类型推断)。简单来说就是直接赋予数组指定的值。

动态初始化:String[] ids = new String[5]; 简单来说就是预留好指定类型的内存空间,之后可以进行赋值。

索引位置:在数组中是从0开始进行索引的


int[] ids1 = {1,2,3};
System.out.println(ids1[0]);//1


数组长度:可以使用数组名.length获取数组的长度


//静态初始化的数组按照其中静态初始化的个数计算
int[] ids1 = new int[]{1,2,3};
System.out.println(ids1.length);//3
//动态初始化的数组按照开辟的内存空间计算
int[] ids2 = new int[5];
System.out.println(ids2.length);//5


默认初始化数组说明:例如int[] ids = new int[5];


基本数据类型(数组元素)


整型:0


浮点型:0.0


char型:0或’\u0000’ ,注意0不是’0’ 。其中’\u0000’ ,输出时看起来是一个空格,实际上是一个unicode字符


char[] c = new char[5];
for (char c1:c){
    System.out.print("1"+c1);
}//结果为:1 1 1 1 1


boolean:false


引用数据类型:null



内存空间



我们拿一个数组举例,如:int[] ids = new int[]{1,2,3,4};


其中new出来的数组内容会放在堆中,并且会分配一个内存地址。接着在栈中存放局部变量ids,并且给这个变量ids的值设置为堆中的内存地址,如下图:



生存周期说明:当作用域结束时,例如main方法结束时,会先从栈中依次退出,然后堆中的内存空间进行释放。



实际案例


int[] ids = new int[]{1,2,3,4};
System.out.println(ids);//[I@677327b6


就是一个内存空间地址,若是访问其中的元素通过访问其数组下标得到,例如ids[0]获取值为1。



二、二维数组


基本认识

二维数组:一个一维数组中的每个位置又包含了一个一维数组。


从数组底层的运行机制来看,实际上没有多维数组


声明二维数组:int[][] ids 或 int[] ids[] 或 int ids[][]


初始化方式:


静态初始化:int[][] ids=new int[][]{{1,2,3},{4,2},{6,7,8}}; 或 int[][] ids={{1,2,3},{4,2},{6,7,8}}

动态初始化:String[][] arr = new String[3][2];或int[][] ids = new int[3][];

初始值:二维数组的初始值跟初始化也有点相关,见下面例子:


//动态初始化 第二个框明确开辟空间的话 就会开辟空间并设置默认值为0 其他基本类型默认赋值与之前一维数组值一样
int[][] ids = new int[4][4];
System.out.println(ids);//[[I@677327b6
System.out.println(ids[0]);//[I@14ae5a5
System.out.println(ids[0][0]);//0



//注意这里第二框没有具体数字,此时java只会开辟前面的一维数组,后面的因不确定个数就不会给你开辟
int[][] ids = new int[3][];
System.out.println(ids);//[[I@677327b6
System.out.println(ids[0]);//null
System.out.println(ids[0][0]);//报错空指针,Exception in thread "main" java.lang.NullPointerException



获取行列数:开辟多少空间就有多少个,就算其中一组一维数组有null还是包含在呢


int[][] ids = new int[3][4];
//求二维数组中x组一维数组
System.out.println(ids.length);//3
//求二维数组中第1组一维数组有多大长度
System.out.println(ids[0].length);//4



三、工具类Arrays


Arrays是java.util包下的一个操作数组的工具类,包含了用来操作数组(如排序与搜索)的各种方法。


列举几个常用的方法:


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 key):对排序后的数组进行二分法检索指定的值


相关文章
|
1月前
|
存储 Java 索引
Java快速入门之数组、方法
### Java快速入门之数组与方法简介 #### 一、数组 数组是一种容器,用于存储同种数据类型的多个值。定义数组时需指定数据类型,如`int[]`只能存储整数。数组的初始化分为静态和动态两种: - **静态初始化**:直接指定元素,系统自动计算长度,如`int[] arr = {1, 2, 3};` - **动态初始化**:手动指定长度,系统给定默认值,如`int[] arr = new int[3];` 数组访问通过索引完成,索引从0开始,最大索引为`数组.length - 1`。遍历数组常用`for`循环。常见操作包括求和、找最值、统计特定条件元素等。
|
1月前
|
存储 Java 索引
Java基础(六):数组
Java基础(六):数组
33 10
Java基础(六):数组
|
1月前
|
存储 Java C++
Java数组:静态初始化与动态初始化详解
本文介绍了Java中数组的定义、特点及初始化方式。
66 12
|
4月前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
62 2
|
3月前
|
Java 数据库连接 API
Spring 框架的介绍(Java EE 学习笔记02)
Spring是一个由Rod Johnson开发的轻量级Java SE/EE一站式开源框架,旨在解决Java EE应用中的多种问题。它采用非侵入式设计,通过IoC和AOP技术简化了Java应用的开发流程,降低了组件间的耦合度,支持事务管理和多种框架的无缝集成,极大提升了开发效率和代码质量。Spring 5引入了响应式编程等新特性,进一步增强了框架的功能性和灵活性。
81 0
java202303java学习笔记第二十三天-初识内部类2
java202303java学习笔记第二十三天-初识内部类2
65 0
java202303java学习笔记第二十四天-静态内部类1
java202303java学习笔记第二十四天-静态内部类1
74 0
java202302java学习笔记第七天-n种内部类
java202302java学习笔记第七天-n种内部类
82 0
java202302java学习笔记第七天-n种内部类
java202302java学习笔记第七天-n种内部类2
java202302java学习笔记第七天-n种内部类2
85 0
java202302java学习笔记第七天-n种内部类2
java202303java学习笔记第二十四天-静态内部类1
java202303java学习笔记第二十四天-静态内部类1
52 0