Java基础篇--Java 数组

  • Java 数组
  • 声明数组变量
  • 创建数组
  • 处理数组
  • For-Each 循环
  • 数组作为函数的参数
  • 数组作为函数的返回值
  • 多维数组
  • 多维数组的动态初始化(以二维数组为例)
  • 多维数组的引用(以二维数组为例)
  • Arrays 类

Java 数组

数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。

Java 语言中提供的数组是用来存储固定大小的同类型元素。

声明数组变量

首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:

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

注意: 建议使用 dataType[] arrayRefVar 的声明风格声明数组变量。 dataType arrayRefVar[] 风格是来自 C/C++ 语言 ,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言。

创建数组

Java语言使用new操作符来创建数组,语法如下:

double[] doubles;
doubles = new double[100];

上面的语法语句做了两件事:

  • 使用 new double[100] 创建了一个数组。
  • 把新创建的数组的引用赋值给变量 doubles。

数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 doubles.length-1。

处理数组

数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者 For-Each 循环。

public class ArrayTest {public static void main(String[] args) {double[] doubles;doubles = new double[5];doubles[0] = 0.1;doubles[1] = 0.1;doubles[2] = 0.1;doubles[3] = 0.1;doubles[4] = 0.1;for (double aDouble : doubles) {System.out.println(aDouble);}}
}

For-Each 循环

JDK 1.5 引进了一种新的循环类型,被称为 For-Each 循环或者加强型循环,它能在不使用下标的情况下遍历数组。

for (double aDouble : doubles) {System.out.println(aDouble);
}

数组作为函数的参数

数组可以作为参数传递给方法。

例如,下面的例子就是一个打印 int 数组中元素的方法:

public static void printArray(int[] array) {for (int i = 0; i < array.length; i++) {System.out.print(array[i] + " ");}
}

下面例子调用 printArray 方法打印出 3,1,2,6,4 和 2:

printArray(new int[]{3, 1, 2, 6, 4, 2});

数组作为函数的返回值

public static int[] reverse(int[] list) {int[] result = new int[list.length];for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {result[j] = list[i];}return result;
}

多维数组

多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组,例如:

String str[][] = new String[3][4];

多维数组的动态初始化(以二维数组为例)

  1. 直接为每一维分配空间,格式如下:
type[][] typeName = new type[typeLength1][typeLength2];

type 可以为基本数据类型和复合数据类型,arraylength1arraylength2 必须为正整数,arraylength1 为行数,arraylength2 为列数。

int a[][] = new int[2][3];
  1. 从最高维开始,分别为每一维分配空间,例如:
@Test
public void moreArrayTest(){//二维数组 str 可以看成一个两行三列的数组。String[][] str = new String[2][10];str[0][0] = "hello";str[0][1] = "world";for (String strings : str[0]) {System.out.println(strings);}
}

二维数组 a 可以看成一个两行三列的数组。

多维数组的引用(以二维数组为例)

对二维数组中的每个元素,引用方式为 arrayName[index1][index2],例如:

Arrays 类

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

  • 给数组赋值:通过 fill 方法。
  • 对数组排序:通过 sort方法,按升序。
  • 比较数组:通过 equals 方法比较数组中元素值是否相等。
  • 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。

具体说明请查看下表:

序号 方法和说明
1 public static int binarySearch(Object[] a, Object key)
- 用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。
2 public static boolean equals(long[] a, long[] a2)
- 如果两个指定的 long 型数组彼此相等,则返回true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
3 public static void fill(int[] a, int val)
- 将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
4 public static void sort(Object[] a)
- 对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。

Java基础篇--Java 数组相关推荐

  1. Java基础篇4——数组

    Java基础篇4--数组 1.数组的概念 当需要在Java程序中记录单个数据内容时,则声明一个变量即可 当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数 组即可,一维数组本质上就是 ...

  2. Java基础篇:数组

    一.数组基础知识: 1.什么是数组: 数组,就是一个容器,存放着同一种类型的数据的集合.数组的好处就是可以自动给数组中的元素从0开始编号,方便操作这些元素.数组属于引用变量,并且数组的长度是固定的,数 ...

  3. Java基础篇 | Java开发环境的搭建

    ✅作者简介:大家好我是@每天都要敲代码,一位材料转码农的选手,希望一起努力,一起进步!

  4. java基础篇_java基础篇1

    JAVA基础篇1 注释 单行注释 //这是一个单行注释,由两个斜杠组成,不能嵌套多行注释 多行注释 /*这是一个 多行注释 ,//里面不能嵌套多行注释, 但是可以嵌套单行注释*/ 文档注释 /**ja ...

  5. 菜鸟学习笔记:Java基础篇6(数组、字符串)

    菜鸟学习笔记:Java常用类(数组.字符串) 数组 概述 数组的定义 二维数组 数组查找和排序 查找 排序 数组运用--字符串 不可变字符序列(String) 可变字符序列(StringBuilder ...

  6. 你所需要的java基础篇深入解析大汇总

    java基础篇深入解析大总结 java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规则 java基础(三) 加强型for循环与Iterator java基础(四) java运算顺序 ...

  7. 你所需要的java基础篇和提升篇大总结

    好好学java 致力于java知识分享 关注 精彩内容 你所需要的java全套视频教程 你所需要的java电子图书 你所需要的大数据视频教程 你所需要的java练习项目 如 / 诗 近半个月,每天一篇 ...

  8. Java基础篇1——变量与数据类型

    Java基础篇1--变量与数据类型 1.标识符命名规则 标识符以由大小写字母.数字.下划线(_)和美元符号($)组成,但是不能以数字开头. 大小写敏感 不能与Java语言的关键字重名 不能和Java类 ...

  9. 菜鸟学习笔记:Java基础篇7(包装类、时间相关类、文件类、异常处理类)

    菜鸟学习笔记:Java其他常用类 基本数据类型包装类 时间处理和文件处理相关类 Date时间类 SimpleDateFormat Calendar日历类 文件类 异常机制 异常的概念 Java异常处理 ...

最新文章

  1. JQuery中.css()与.addClass()设置样式的区别
  2. 利用qt和ffmpeg软件来制作视频裁剪工具
  3. 【链接保存】十分钟上手sklearn:安装,获取数据,数据预处理
  4. SQL关联查询————LEFT JOIN关键字的使用
  5. HighCharts入门
  6. 选择开还是关 pxe_商用披萨(53)开披萨店是选择加盟还是自创品牌呢?
  7. ubuntu16.04 apt-get update出错:由于没有公钥,无法验证下列签名
  8. Zhang-Suen细化算法讲解及实现
  9. NYOJ-97兄弟郊游问题
  10. win10cmd重置系统_命令提示符修复系统win10 系统还原
  11. mysql源码解读——源码介绍
  12. Mac 在 Appstore 下载 hight Sierra 10.13
  13. xsos:一个在Linux上阅读SOSReport的工具
  14. 科普篇:内存、“运行内存”、外存?傻傻分不清楚。看完这篇就懂了
  15. EVG实现芯片到晶圆的融合和混合键合
  16. 小红伞命令行工具ScanCL使用安装
  17. 信息收集(一)域名信息收集
  18. GParted图形化工具对Linux磁盘分区扩容
  19. colorkey口红怎么样_colorkey口红推荐什么颜色
  20. 三星手机的计算机功能在哪里,三星手机隐藏特殊功能 三星手机使用技巧大全...

热门文章

  1. 软件能力成熟模型(CMM)的五个成熟级别
  2. 记录断舍离,极简生活的开始
  3. 在日本之后,中国也发布新型光刻机,ASML加快对中国出口光刻机
  4. css中首字母下沉_具有“首字母”的更好CSS首字下沉
  5. 【项目管理】如何进行项目变更管理?
  6. 【游戏开发】定时器循环播放动画
  7. mac上编写运行shell script(shell脚本)
  8. 64位系统运行报错:1%不是有效的win32应用程序解决
  9. 虚继承:解决菱形继承问题
  10. 微信小程序在真机上发起网络请求失败