数组的介绍

数组是指一组数据的集合,且同一个数组中存在的数据都是同一类型的,我们用下角标来表示元素在数组中的位置,从 0 开始 。数组的长度表示数组中元素的个数,所以说,长度为 5 的数组的索引是从 0 ~ 4 。

数组的声明就是在说明一下,哎,注意了,我需要一个容器来存放这些类型相同的元素 。声明的方式有这些。 int[] arr ; int arr[] 或是 对象的集合 People[] p ; 这样就声明了一个数组 。但注意此时只是一个在栈中的变量 。接下来就是数组的初始化,使用 new 关键字可以在堆中申请一块空白区域用于保存数组中的元素 。语法是这样,int[] arr = new int[5]; 这就表示创建了一个 5 个 int 类型的元素,而且这些元素是有默认值的,基本数据类型的默认值参考上一节,引用类型的元素默认值为 null 。另外数组在创建的时候需要指定其长度,且数组的长度在之后不可变 。像上面我们是指定了长度为 5 ,也可以传入一个变量 。这里解释一个数组的长度不可变,我们是用 arr 这个变量(遥控器)来操作堆中的数组,但是 arr 还是可以指向其它的数组对象的 ,所以我们说的数组不可变是值堆中的数组实体一旦创建,就不可变,而不是 arr 不能变。

到这里我们就已经得到一个空白的数组对象,有关于数组的操作等下说 。先说一下二维数组的定义和内存分配的情况 。我们可以把二维数组想象成是一维数组的数组,比如 int [][] arr = new int [2][3]; 这表示创建一个 2 行 3 列的数组,可以看成是 int[0] = new int[3] int[1] = new int[3]; 这样两个一维数组 。或许看看图片能刚好的理解,这里放几张来自百度的数组在内存中的分配图 。

看到这里应该也明白了为什么会有索引了吧,因为没有索引根本定位不到具体的值呀 !

下面就来看一下数组的常用操作 。

  1 /**
  2 数组的声明与创建
  3 */
  4
  5 String [] arr;
  6 int arr1[];
  7 String[] array=new String[5];
  8 int score[]=new int[3];
  9
 10 /**
 11 数组赋值
 12 */
 13
 14 //初始化时赋值
 15 int arr2[]=new int[]{1,2,3,4,5};
 16 String[] array1={"马超","马云","关羽","刘备","张飞"};
 17 String[] array2=new String[]{"黄渤","张艺兴","黄磊"};
 18 int score[]=new int[3];
 19 //动态赋值
 20 for(int i=0;i<score.length;i++)
 21 {
 22   score[i]=i+1;
 23 }
 24
 25 /**
 26 打印数组
 27 */
 28
 29 int[] arr = { 1, 2, 3, 4, 5 };
 30 String arrString = Arrays.toString(arr);
 31
 32 // 直接输出,为内存地址
 33 System.out.println(arr);
 34 // [[email protected]
 35
 36 System.out.println(arrString );
 37 // [1, 2, 3, 4, 5]
 38
 39 /**
 40 int 数组转成 string 数组
 41 */
 42
 43 int[]  array3={1,2,3,4,5,6,7,8,9,0};
 44 String arrStrings=Arrays.toString(array3);
 45
 46 /**
 47 数组转成 list 集合
 48 */
 49
 50 String[] array2 = new String[]{"黄渤","张艺兴","孙红雷","黄磊"};
 51 //方法 1
 52 List<String> list=new ArrayList<String>();
 53 for (int i = 0; i < array2.length; i++) {
 54     list.add(array2[i]);
 55 }
 56
 57 String[] arrStrings2={"1","2","3"};
 58 //方法 2
 59 List<String > list2=java.util.Arrays.asList(arrStrings2);
 60
 61 /**
 62 检查数组中是否包含某一个值
 63 */
 64
 65 String a="马超";
 66 String[] array1={"马超","马云","关羽","刘备","张飞"};
 67 if (Arrays.asList(array1).contains(a)) {
 68     System.out.println("马超在这里");
 69 }
 70
 71 /**
 72 数组转成 set 集合
 73 */
 74
 75 String[] array2=new String[]{"黄渤","张艺兴","孙红雷","黄磊"};
 76 Set<String> set=new HashSet<String>(Arrays.asList(array2));
 77
 78 /**
 79 数组的排序 sort() : 从小到大排序 。下一节总结一下排序的算法 。
 80 */
 81
 82 //方法 1
 83 int[] arr4 = {3, 7, 2, 1, 9};
 84 Arrays.sort(arr4);         // sort(int[] a)   放入数组名字
 85 for (int i = 0; i < arr4.length; i++) {
 86     System.out.println(arr4[i]);
 87 }
 88 //方法 2
 89 int[] arr5 = {3, 7, 2, 1, 9,3,45,7,8,8,3,2,65,34,5};
 90 Arrays.sort(arr5, 1, 4);  // sort(a, fromIndex, toIndex)    从第几个到第几个之间的进行排序
 91
 92 /**
 93 数组的复制
 94 */
 95
 96 //方法 1
 97 int[] arr6 = {3, 7, 2, 1};
 98 int[] arr7=Arrays.copyOf(arr6, 10);  //指定新数组的长度
 99 //方法 2
100 int[] arr8=Arrays.copyOfRange(arr6, 1, 3); //只复制从索引[1]到索引[3]之间的元素(不包括索引[3]的元素)
101 for (int i = 0; i < arr8.length; i++) {
102         System.out.println(arr8[i]);
103 }
104
105 // 比较两个数组
106 boolean arr10=Arrays.equals(arr6, arr9);
107
108 /**
109 数组的去重
110 */
111
112 int[] arr11 = {1, 2, 3, 4,5,6,7,8,9,0,3,2,4,5,6,7,4,32,2,1,1,4,6,3};
113 //利用set的特性(无序不重复)
114 Set<Integer> set2=new HashSet<Integer>();
115 for (int i = 0; i < arr11.length; i++) {
116     set2.add(arr11[i]);
117 }
118 System.out.println(set2);
119 int[] arr12 = new int[set2.size()];
120 int j=0;
121 for (Integer i:set2) {
122     arr12[j++]=i;
123 }
124 System.out.println(Arrays.toString(arr12));

原文地址:https://www.cnblogs.com/YJK923/p/9428663.html

时间: 2024-08-30 17:38:12

数组的介绍的相关文章

C# 数组实例介绍(图文)

数组即是一组相同类型组合在一起,使用一个通用的名称,通过分配的下标访问的数据集合中的元素. 数组是具有相同类型的一组数据.当访问数组中的数据时,可以通过下标来指明.c#中数组元素可以为任何数据类型,数组下标从0开始,即第一个元素对应的下标为0,以后逐个递增.数组可以一维也可多维. 一维数组是最基本的数组类型,其声明方法如下: 数据类型 [ ] 数组名 ; 举例: int [ ] anArray ; // 声明一个整型的一维数组 具有两个维度的数组是二维数组,其声明方法如下: 数据类型 [ , ]

OC 数组方法介绍

NSArray 是不可变的数组,只能够存放对象,但是可以存放不同类型的对象 首先定义一个类 #import <Foundation/Foundation.h> @interface Person : NSObject @property NSString *name; - (id)initWithName:(NSString *)name; @end #import "Person.h" @implementation Person - (id)initWithName:(

python中数组与多维数组用法介绍

增加时a.append( 'a ')就可以了.只要按顺序加,就没有问题 . 使用时,完全可以使用下标: 代码如下 复制代码 a[0] a[1] 但出果引用不存在的下标,则会引发异常.这时,你需要先添加元素,再引用就没有问题 了.如果想预先保留空间,可以使用循环来给list,每个元素一个缺省值,再引用就不会有问题 了. 如: 代码如下 复制代码 a=[] for i in range(100): a.append([]) for j in range(100): a[i].append(0) 这样

ruby中的数组相关方法介绍

l = ["a","b","c","d","e","f",'g'] puts l.values_at(2,3,4,6) # 获取index为2.3.4.6的元素 # # l1 = ["a","b","c","d","e","f",'g'] l2 = ["a&q

java 数组详细介绍

一.概述 数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理 数组常见概念: 数组名, 下标(或索引), 元素, 数组的长度 数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型 创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址 数组的长度一旦确定,就不能修改 可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快 数组的分类: 按照维度: 一维数组.二

C语言之二维数组

二维数组及其指针 1 ) 在了解二维数组之前,我们先来了解一维数组及其指针 我们知道,一维数组中:数组名代表-->数组首元素的首地址    (千万不要认为是数组的首地址(&a),绝对不是) 在内存中,该代码的表现形式如下图:</span> #include<stdio.h>   {         int a[4];         int *p  = a;  //表明该指针指向了数组的首元素地址,当然也可以写为 int *p = &a[0];        

swift学习第六天:数组

数组 数组的介绍 数组(Array)是一串有序的由相同类型元素构成的集合 数组中的集合元素是有序的,可以重复出现 Swift中的数组 swift数组类型是Array,是一个泛型集合 数组的初始化 数组分成:可变数组和不可变数组 使用let修饰的数组是不可变数组 使用var修饰的数组是可变数组 // 定义一个可变数组,必须初始化才能使用 var array1 : [String] = [String]() // 定义一个不可变数组 let array2 : [NSObject] = ["why&q

swift-Array(数组相关属性)

// //  ViewController.swift //  Swift-Array // //  Created by luorende on 16/9/12. //  Copyright © 2016年 luorende. All rights reserved. // import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do a

PHP学习(数组)

数组就是一个键值对组成的语言结构,键类似于酒店的房间号,值类似于酒店房间里存储的东西. PHP有两种数组:索引数组.关联数组. 索引和关联两个词都是针对数组的键而言的. 索引数组 先介绍下索引数组,索引数组是指数组的键是整数的数组,并且键的整数顺序是从0开始,依次类推---赋值有三种方式: 第一种:用数组变量的名字后面跟一个中括号的方式赋值,当然,索引数组中,中括号内的键一定是整数.比如,$arr[0]='苹果'; 第二种:用array()创建一个空数组,使用=>符号来分隔键和值,左侧表示键,右