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. (NO.00001)iOS游戏SpeedBoy Lite成形记(八)

    前一篇提到,如果要想动态修改选手的速度需要在update方法中添加代码. 因为update方法在游戏每一帧都会调用,所以我们不可能修改的太频繁.否则一来对性能有影响,而来玩家表现的极不自然,像抽风一样 ...

  2. 小强的HTML5移动开发之路(4)——CSS2和CSS3

    来自:http://blog.csdn.net/dawanganban/article/details/17653149 在上一篇中我们提到学习HTML5要具备CSS的知识,在页面设计的时候HTML5 ...

  3. 【一天一道LeetCode】#58. Length of Last Word

    一天一道LeetCode系列 (一)题目 Given a string s consists of upper/lower-case alphabets and empty space charact ...

  4. OpenCV 直线检测

    /*------------------------------------------------------------------------------------------*\ This ...

  5. "C#":MySql批量数量导入

    现在对数据库(以MySql为例)的操作大多会封装成一个类,如下例所示: namespace TESTDATABASE { public enum DBStatusCode { ALL_OK, MySq ...

  6. 未能加载文件或程序集“file:///C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0

    未能加载文件或程序集"file:///C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framewor ...

  7. C语言之可变参实现scanf函数

    既然有printf函数可变参实现,那就一定有scanf函数的可变参实现.废话不多说,源码奉上: 本源码不过多分析,如要明白原理,请翻本博客以往的文章看说明. 欢迎关注新浪微博:http://weibo ...

  8. How to configure ODBC DSN in Client to access remote DB2 for Windows

      How to configure ODBC DSN in Client to access remote DB2 for Windows MA Gen feng (Guangdong Unito ...

  9. 十六进制颜色转换为iOS可以用的UIColor

    // //  UIColor+Transformation.h //  ContactApp // //  Created by 袁冬冬 on 15/9/11. //  Copyright (c) 2 ...

  10. EJB 介绍

    EJB 编辑   EJB是sun的服务器端组件模型,设计目标与核心应用是部署分布式应用程序.凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台.EJB (Enterprise  ...