Java 数组

数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。
Java 语言中提供的数组是用来存储固定大小的同类型元素。

声明数组变量

首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:
dataType[] arrayRefVar;   // 首选的方法

dataType arrayRefVar[]; // 效果相同,但不是首选方法

创建数组

Java语言使用new操作符来创建数组,语法如下:
arrayRefVar = new dataType[arrayLength];
上面的语法语句做了两件事:
  • 一、使用 dataType[arrayLength] 创建了一个数组。
  • 二、把新创建的数组的引用赋值给变量 arrayRefVar。
数组变量的声明,和创建数组可以用一条语句完成,如下所示:
dataType[] arrayRefVar = new dataType[arrayLength];
另外,你还可以使用如下的方式创建数组。
dataType[] arrayRefVar = {value0, value1, ..., valuen};
数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arrayRefVar.length-1。

处理数组

数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者 foreach 循环。
示例
该实例完整地展示了如何创建、初始化和操纵数组:
TestArray.java 文件代码:
public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5}; // 打印所有数组元素
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + " ");
}
// 计算所有元素的总和
double total = 0;
for (int i = 0; i < myList.length; i++) {
total += myList[i];
}
System.out.println("Total is " + total);
// 查找最大元素
double max = myList[0];
for (int i = 1; i < myList.length; i++) {
if (myList[i] > max) max = myList[i];
}
System.out.println("Max is " + max);
}
}
以上实例编译运行结果如下:
1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5

foreach 循环

JDK 1.5 引进了一种新的循环类型,被称为 foreach 循环或者加强型循环,它能在不使用下标的情况下遍历数组。
示例
public class Demo06 {
public static void main(String[] args) {
int a[] = {1,2,9,3,8,5};
// forEach循环 遍历数组 i为数据
for(int i : a){
System.out.println(i);
}
}
}
运行结果:

Arrays 类

java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
具有以下功能:

1、对数组排序:通过 sort 方法,按升序。

import java.util.Arrays;

public class Demo08 {
public static void main(String[] args) {
int arr[] = {12,34,51,6,24,48,31};
Arrays.sort(arr);
for (int i : arr) {
System.out.println(i);
}
}
}
运行图:

2、比较数组:通过 equals 方法比较数组中元素值是否相等。

import java.util.Arrays;

public class Demo09 {
public static void main(String[] args) {
//equals:比较两个数组的大小
int arr1[] = {1,2,3};
int arr2[] = {1,2,3};
int arr3[] = {1,2,4};
int arr4[] = {1,3,2};
// 数组的相等是数组内元素大小、顺序和类型全部相等
System.out.println(Arrays.equals(arr1, arr2));
System.out.println(Arrays.equals(arr1, arr3));
System.out.println(Arrays.equals(arr1, arr4));
System.out.println(Arrays.equals(arr2, arr3));
System.out.println(Arrays.equals(arr2, arr4));
System.out.println(Arrays.equals(arr3, arr4));
}
}
运行图:

3、toString:用来把数组转换成字符串

import java.util.Arrays;
  public class Demo10 {
   public static void main(String[] args) {
int a[] = {1,5,3,4,8};
System.out.println(Arrays.toString(a));
   }
}
运行图:

4、给数组赋值:通过 fill 方法,用来给数组填充新数据,把源数据覆盖

import java.util.Arrays;   public class Demo11 {     public static void main(String[] args) {     int a[] = {1,5,3,4,8};     int val = 20;     Arrays.fill(a, val);     System.out.println(Arrays.toString(a));     } }

运行图:

5、查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。

(对升序的数组才有效,两个元素只能查找到第一个的索引)
import java.util.Arrays;
  public class Demo12 {
    public static void main(String[] args) {
    //binarySearch:用来查找数组中指定的元素索引
    //binarySearch:对升序的数组才有效,两个元素只能查找到第一个的索引
    int a[] = {5,3,0,4,9,7,0,2};
    Arrays.sort(a);
    System.out.println(Arrays.toString(a));
    System.out.println(Arrays.binarySearch(a, 0));
    }
}
运行图:

6、copyOf:从数组头部开始,复制指定长度的数组,参数1:要复制的源数组;参数2:要复制的数组元素的个数,如果要复制的数组元素数量大于源数组长度,多出的数组元素补0

import java.util.Arrays;
  public class Demo13 {
    public static void main(String[] args) {
    int a[] = {20,25,24,36};
    int b[] = Arrays.copyOf(a, 3);
    int c[] = Arrays.copyOf(a, 4);
    int d[] = Arrays.copyOf(a, 5);
    System.out.println(Arrays.toString(b));
    System.out.println(Arrays.toString(c));
    System.out.println(Arrays.toString(d));
    }
}
运行图:

7、copyOfRange:复制数组中的某一段数据;参数1:要复制的源数据;参数2:开始索引(包括);参数3:结束索引(不包括)

import java.util.Arrays;
  public class Demo14 {
    public static void main(String[] args) {
    int arr[] = {20,60,40,80,90,20};
    int arr2[] = Arrays.copyOfRange(arr, 1, 4);
    int arr3[] = Arrays.copyOfRange(arr, 0, arr.length-1);
    System.out.println(Arrays.toString(arr2));
    System.out.println(Arrays.toString(arr3));
    }
}
运行图:

Java (三、数组)的更多相关文章

  1. 三 基于Java动态数组手写队列

    手写队列: package dataStucture2.stackandqueue; import com.lt.datastructure.MaxHeap.Queue; import dataStu ...

  2. Java基础——数组应用之StringBuilder类和StringBuffer类

    接上文:Java基础——数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...

  3. Java RGB数组图像合成 ImageCombining (整理)

    /** * Java RGB数组图像合成 ImageCombinning (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * * 注意事项: * 1.本程序为java程序,同时感谢您花费 ...

  4. JAVA基础——数组详解

    学习JAVA中数组的使用 一.什么是数组? 问:编写代码保存 4 名学生的考试成绩. 答:简单啊,定义 4 个变量呗 问:那"计算全年级 400 名学生的考试成绩",肿么办 答: ...

  5. Java的数组,集合,数据结构,算法(一)

    本人的愚见,博客是自己积累对外的输出,在学习初期或自己没有多少底料的情况下,与其总结写博客不如默默去搞自己的代码,但是学到集合这一块时,数组,集合,数据结构,算法这个概念搞的我比较混淆,所以不得已写这 ...

  6. Java 中数组的内存分配

    Java 中数组的内存分配 1.Java 程序在运行时,需要在内存中分配空间.为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据和内存管理方式. 2.数组基本概念 数组是 ...

  7. 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)

    方法一:使用Arrays.asList()方法   1 2 String[] asset = {"equity", "stocks", "gold&q ...

  8. java byte数组与16进制间的相互转换

      java byte数组与16进制间的相互转换 CreationTime--2018年6月11日15点34分 Author:Marydon 1.准备工作 import java.util.Array ...

  9. java基础-数组的折半查找原理

    java基础-数组的折半查找原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让你写一个数组的查找功能,需求如下:在一个数组中,找一个元素,是否存在于数组中, 如果存在就返回 ...

  10. Java基础-数组常见排序方式

    Java基础-数组常见排序方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 数据的排序一般都是生序排序,即元素从小到大排列.常见的有两种排序方式:选择排序和冒泡排序.选择排序的特 ...

随机推荐

  1. (四十七)Quartz2D引擎初步

    Quartz2D是跨平台的,同时支持iOS与Mac. 支持圆型裁剪,可以实现圆形头像等功能,也支持手势解锁.折线图等的制作. 对于复杂的UI界面,还可以通过Quartz2D将控件内部的结构画出来,可用 ...

  2. Ajax核心--XMLHttpRequest对象

    XMLHttpRequest 对象是AJAX功能的核心,学习XMLHttpRequest对象就先从创建XMLHttpRequest 对象开始,了解在不同的浏览器中创建XMLHttpRequest 对象 ...

  3. python的IndentationError: unexpected indent python

    都知道python是对格式要求很严格的,写了一些python但是也没发现他严格在哪里,今天遇到了IndentationError: unexpected indent错误我才知道他是多么的严格.    ...

  4. 学习pthreads,使用条件变量进行多线程之间的同步

    条件变量提供另一种多线程同步的方法.互斥量通过控制对共享数据的访问来同步任务.条件变量可以根据数据的值来同步任务.条件变量是当一个事件发生时发送信号的信号量.一旦事件发生,可能会有多个线程在等待信号, ...

  5. 【Qt编程】基于Qt的词典开发系列<三>--开始菜单的设计

    这篇文章讲讲如何实现开始菜单(或者称为主菜单)的设计.什么是开始菜单呢?我们拿常用的软件来用图例说明,大多数软件的开始菜单在左下角,如下图: 1.window 7的开始菜单 2.有道词典的主菜单 3. ...

  6. Erlang Rebar 使用指南之四:依赖管理

    Erlang Rebar 使用指南之四:依赖管理 全文目录: https://github.com/rebar/rebar/wiki 本章链接: https://github.com/rebar/re ...

  7. SpriteBuilder全屏弹出菜单的特殊效果

    但是等一下!这里可以有更多.对于全屏的弹出菜单,你可以在显示弹出全屏菜单时朦胧化背景的level视图. 通过修改SpriteBuilder中的color节点的Color属性(比如修改为black)和O ...

  8. iOS中获取本地通讯录联系人以及汉字首字母排序

    iOS中获取手机通讯录中的联系人信息: /*** 加载本地联系人*/ - (void)loadLocalContacts { //新建一个通讯录类 ABAddressBookRef addressBo ...

  9. rails应用ajax之三:进一步完善ajax动画特效果

    本猫已经对界面放低标准很久了,但是复习了ajax之后突然发现:哇!原来世界可以这么美,这么生动鲜活的!所以本篇主要讨论下如何用ajax在rails中做一些简单的动画效果. 其实最新版的的rails中使 ...

  10. AMDP + XLSX Workbench 报表开发模式

    本文介绍了我和同事通过使用AMDP + XLSX Workbench缩短报表开发周期.分离数据查询处理逻辑和前端展示工作的经验.欢迎讨论. 前言 最近接到了一套人力资源报表的开发需求,需要以EXCEL ...