ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Array

2022-05-30 23:36:05  阅读:103  来源: 互联网

标签:String Arrays arraySource int 数组 长度 Array


Array是引用类型, 它是存储长度固定的结构, 存储的元素必须同类型

⚠️ 长度在创建时被固定,之后再也不能更改

each item in an array is called an element, accessed by its numerical index(index从0开始)


数组的声明

数组的声明包含两个部分: 数组的类型和数组的名字

数组的类型写作type[], type是数组元素的类型, []表示该数组类型变量指向一个数组对象

❗ 数组长度在声明时不指定

数组声明并不真正的在内存中创建一个数组对象,只是告知编译器此处有一个变量将指向数组类型

❗ 多维数组遵从上述声明定义, 实质上Java中并没有多维数组的概念。多维数组只是元素类型是数组的数组而已

public void declareArray() {
	int[] anArray;
    /* 多维数组声明,数组元素类型是int[] */
    int[][] arrayOfArray; 
}

数组的实例化和访问

实例化一个数组对象, 需要使用new操作符. 实例化时可显式的指定数组的长度,也可让编译器推断出长度(只能在声明的同时使用)

数组对象通过索引访问它存储的元素, 数组对象的长度通过属性length可以获取

public void initializeArray() {
	anArray = new int[10]; // 显式的指定长度
    arrayOfArray = new int[10][4]; // 由外到内指定各维度数组对象的长度,10行4列
    anArray = { 1, 2 }; // 错误: 推断长度只能在声明时使用
    int[] anArr = {1, 2}; // 推断长度
}

数组操作

对于常见的数组操作,如复制、排序、查询元素等,Java提供了一个工具类java.util.Arrays

import java.util.Arrays;
import java.util.stream.Stream;

public void manipulateArray() {
	String[] arraySource = {"A", "B", "C", "D"};
    /* 复制 "B" "C" */
    String[] arrayTo = Arrays.copyOfRange(arraySource, 1, 3);
    /* 排序 - 数组元素是引用类型的,可以提供一个Comparator*/
    Arrays.sort(arraySource, (o1, o2)->{ return o1.compareTo(o2); });
    /* 查询 */
    int indexOfValue = Arrays.binarySearch(arraySource, "B");    
    /* 判断相等 */
    boolean addressEquals = Arrays.equals(arraySource, arrayTo); // 判断两个数组变量, 是否指向同一个地址
    boolean elementsEquals = Arrays.equals(arraySource, 1, 3, arrayTo, 1, 3); // 指定区间内的数组元素是否一一相等
    /* 转换为字符串 */
    String arrayStr = Arrays.toString(arraySource);
    /* 转换为流 - 流具备非常好的性质 */
    Stream<String> strStream = Arrays.stream(arraySource);
    strStream.map(elem -> elem + "|").forEach(System.out::print);
}

System.arraycopy()提供了快速复制操作,将一个数组的元素复制到另一个元素上

public void copyArray() {
	String[] arrayFrom = {"A", "B", "C", "D"};
    String[] arrayTo = new String[2];
    System.arraycopy(arrayFrom, 1, arrayTo, 0, 2);
}

标签:String,Arrays,arraySource,int,数组,长度,Array
来源: https://www.cnblogs.com/thecolorfulday/p/16328770.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有