Java容器深入浅出之数组

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 写在前面关于Java的学习,特别是对于非计算机专业的同学来说,我总是主张从实践中来,到实践中去的学习方法。Java本身是一门应用性特别强的高级编程语言,因此如果能在基于实际开发的经验基础上,对JavaSE的核心知识做总结和梳理,将非常有利于沉淀自身的技术知识,并且为进一步的深入研究打好基础。

写在前面

关于Java的学习,特别是对于非计算机专业的同学来说,我总是主张从实践中来,到实践中去的学习方法。Java本身是一门应用性特别强的高级编程语言,因此如果能在基于实际开发的经验基础上,对JavaSE的核心知识做总结和梳理,将非常有利于沉淀自身的技术知识,并且为进一步的深入研究打好基础。

JavaSE的知识层次,基于我的经验,可以分为4点:

1. 基础知识:包括基本数据类型、语法规范、运算符、流程控制和异常。

2. 面向对象:包括封装、继承和多态的Java实现及相关语言特性。

3. 基础进阶:包括常用类、容器、JDBC、IO等。

4. 高阶深入:包括多线程、反射、JMM、JVM及网络编程等。

Java企业级开发,包括Web应用、分布式及大数据等高可靠、高并发和高可用的系统均来自于这些基础的实现。

关于容器

容器在日常开发中的地位不言而喻,小到链表的实现,大到消息队列的框架,都与容器息息相关。当完成了Java基础知识和面向对象知识的学习之后,就可以开始学习容器并深入理解Java基本数据结构的底层实现原理。

Java的容器大致可以分为数组、字符串对象和集合

数组的基本使用

Java数组的要点:

1. 数组完成初始化,在内存中的长度固定,不可改变;

2. 数组可以存放基本数据类型和对象的引用,但只能保存同一种类型的数据。

数组的定义:

type[] arrayName;

数组的初始化:

1. 静态初始化:显式指定每个数组元素的初始值

arrayName = new type[]{element1, element2, element3...};
arrayName = {element1, element2, element3...};

2. 动态初始化:只给定数组长度,由系统指定元素的默认初始值

arrayName = new type[length];

数组的使用:

1. 查:通过索引获取数组某个元素的值

2. 改:通过索引对数组某个元素的值更新(典型的如循环赋值)

Java8增强的Array类

Array类的若干static方法可以方便对数组进行操作:

1. 查找

int binarySearch(type[] a, type key) --- 数组按升序排列,通过二分法查找key在a中的索引,没有则返回负数。

int binarySearch(type[] a, int from, int to, type key) --- 数组按升序排列,通过二分法查找key在a的from和to中的索引,没有则返回负数。

2. 排序

void sort(type[] a) --- 排序

void sort(type[] a, int from, int to) --- from到to之间的元素进行排序

3. 复制

type[] copyOf(type[] original, int length) --- 把original复制成一个新数组:

3.1 如果length等于original的长度,全部复制;

3.2 如果length小于original的长度,只复制前length位

3.3 如果length大于original的长度,余下的系统默认初始值赋值

type[] copyOfRange(type[] original, int from, int to) --- 把original的from到to复制成一个新数组

4. 转换

void fill(type[] a, type val) --- 将a的所有元素赋值为val

void fill(type[] a, int from, int to, type val) --- 将a的从from到to的元素赋值为val

String toString(type[] a) --- 转换为一个字符串

5. 判断

boolean equals(type[] a, type[] b) --- 长度和元素均相等的两个数组则返回true

Arrays类Demo如下:

 1 package org.leo.demo.arrays;
 2 
 3 import java.util.Arrays;
 4 
 5 public class TestArrays {
 6 
 7     public static void main(String[] args) {
 8         
 9         int[] a = new int[] {3,4,5,6};
10         int[] a2 = {3,4,5,6};
11         
12         System.out.println("a equals a2? " + Arrays.equals(a, a2));
13         
14         int[] b = Arrays.copyOf(a, 6);
15         System.out.println("a equals b? " + Arrays.equals(a, b));
16         System.out.println("b array is: " + Arrays.toString(b));
17         
18         Arrays.fill(b, 2, 4, 1);
19         System.out.println("b array is: " + Arrays.toString(b));
20         
21         Arrays.sort(b);
22         System.out.println("b array is: " + Arrays.toString(b));
23         
24         System.out.println("the index of number 1 in b is:" + Arrays.binarySearch(b, 1));
25 
26     }
27 
28 }

 

目录
相关文章
|
2月前
|
Kubernetes Cloud Native Java
云原生之旅:从容器到微服务的演进之路Java 内存管理:垃圾收集器与性能调优
【8月更文挑战第30天】在数字化时代的浪潮中,企业如何乘风破浪?云原生技术提供了一个强有力的桨。本文将带你从容器技术的基石出发,探索微服务架构的奥秘,最终实现在云端自由翱翔的梦想。我们将一起见证代码如何转化为业务的翅膀,让你的应用在云海中高飞。
|
6天前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
|
14天前
|
存储 Java
什么是带有示例的 Java 中的交错数组?
什么是带有示例的 Java 中的交错数组?
38 9
|
12天前
|
Java
Java数组动态扩容和动态缩减
Java数组动态扩容和动态缩减
14 3
|
15天前
|
消息中间件 NoSQL Kafka
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
30 4
|
17天前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
19 6
|
13天前
|
存储 Java 程序员
【一步一步了解Java系列】:何为数组,何为引用类型
【一步一步了解Java系列】:何为数组,何为引用类型
19 1
|
14天前
|
存储 XML Java
如何在 Java 中将常见文档转换为 PNG 图像数组
如何在 Java 中将常见文档转换为 PNG 图像数组
12 1
|
25天前
|
存储 安全 Java
Java数组(Arrays)详解
Java 中的数组是一种用于存储固定数量同类型数据的高效数据结构,支持连续内存存储和随机访问。数组可以声明并初始化,通过索引访问和修改元素,获取长度,使用循环遍历,支持多维形式,并可通过 `Arrays` 类的方法进行复制和排序。数组具有固定大小和类型安全的特点,但需注意越界等问题。灵活运用数组能显著提升编程效率。
|
6天前
|
存储 算法 Java
带你学习java的数组军队列
带你学习java的数组军队列
24 0