热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

Java中的数组基础知识学习教程

这篇文章主要介绍了Java中的数组基础知识学习教程,文中同时也整理了Java对数字类型的支持状况及Number类中的方法,需要的朋友可以参考下

数字

通常情况下,当我们处理数字时,使用原始数据类型,如 byte,int,long,double 等。

示例

int i = 5000;
float gpa = 13.65;
byte mask = 0xaf;

然而,在开发中,我们会遇到需要使用对象而不是原始数据类型的情况。为了实现这个, Java 为每个原始数据类型提供包装类。

所有的包装类 (Integer, Long, Byte, Double, Float, Short) 是抽象类 Number 的子类。

201621884859636.jpg (400×167)

这种包装是由编译器处理,这个过程称为装箱。因此,当一个原始数据类型被使用,当需要一个对象时,编译器将原始数据放入其包装类。同样地,编译器也能将对象取出返回到原始数据类型。Number 是 java.lang 包的一部分。

这里是装箱和拆箱的一个例子:

public class Test{

  public static void main(String args[]){
   Integer x = 5; // boxes int to an Integer object
   x = x + 10;  // unboxes the Integer to a int
   System.out.println(x); 
  }
}

这将产生以下结果:

代码如下:
15

当 x 被分配整数值,则编译器将整数放入箱中,因为 x 为整数对象。然后,x 被拆箱,以便它们可以被添加为整数。

Number 方法
以下是对 Number 类实现的所有子类中实现的实例方法的列表:

SN 方法描述
1 xxxValue()
这个Number对象的值转换为XXX的数据类型并返回
2 compareTo()
把这个Number对象与参数做比较
3 equals()
确定这个数字对象是否等于参数
4 valueOf()
返回一个Integer对象持有指定的原始值
5 toString()
返回表示指定的int或整数的值的String对象
6 parseInt()
此方法用于获取某个字符串的原始数据类型
7 abs()
返回参数的绝对值
8 ceil()
返回的最小整数大于或等于该参数。返回为double
9 floor()
返回的最大整数小于或等于该参数。返回为double
10 rint()
返回的整数,它是最接近值该参数值。返回为double
11 round()
返回最接近的long或者int,通过该方法的返回类型所指参数
12 min()
返回两个参数中较小的
13 max()
返回两个参数中较大的
14 exp()
返回自然对数的底数e,该参数的幂值
15 log()
返回参数的自然对数
16 pow()
返回第一个参数的提高至第二个参数的幂值
17 sqrt()
返回参数的平方根
18 sin()
返回指定的double值的正弦值
19 cos()
返回指定的double值的余弦值
20 tan()
返回指定的double值的正切值
21 asin()
返回指定的double值的反正弦
22 acos()
返回指定的double值的反余弦值
23 atan()
返回指定的double值的反正切值
24 atan2()
将直角坐标(x,y)转换为极坐标(r,θ)并返回θ
25 toDegrees()
将参数转换为度
26 toRadians()
将参数转换为弧度
27 random()
返回一个随机数


数组
Java 提供了一个数据结构:数组,用于存储相同类型的元素的一个固定大小的连续集合。数组是用于存储数据的集合,但往往将数组认为是相同类型的变量的集合。

跟声明单个变量相反,如 number0, number1, ... number99, 声明一个数组变量,如数字和使用 numbers[0], numbers[1] ..., numbers[99] 来表示各个变量。

此次教程将介绍如何使用索引变量声明数组变量,创建数组,并处理数组。

声明数组变量
要使用一个程序的数组,必须声明一个变量来引用数组,必须指定数组的变量可以引用的类型。下面是来声明一个数组变量的语法:

dataType[] arrayRefVar;  // preferred way.

or

dataType arrayRefVar[]; // works but not preferred way.

注 风格 dataType[] arrayRefVar 是首选的。风格 dataType arrayRefVar[] 来自于 C/C++ 语言, 方便Java 继承 C/C++ 的编程风格。

示例

下面的代码片段是这种语法的例子:

double[] myList;     // preferred way.

or

double myList[];     // works but not preferred way.

创建数组
可以通过使用 new 运算符使用以下语法创建一个数组:

arrayRefVar = new dataType[arraySize];

上面的语句做了两件事:

  • 它创建了一个使用 new dataType[arraySize] 的数组;
  • 它将新创建的数组引用分配给变量 arrayRefVar。

声明数组变量,建立一个数组,并分配给变量数组引用可以在一个语句中组合使用,如下所示:

dataType[] arrayRefVar = new dataType[arraySize];

另外,可以创建数组,如下所示:

dataType[] arrayRefVar = {value0, value1, ..., valuek};

数组元素通过索引访问。数组的下标是从0开始的,也就是说,它们从0开始到 arrayRefVar.length-1。

示例

下面的语句声明一个数组变量 myList,创建 double 类型的10个元素的数组,并把它的引用分配到 myList :

double[] myList = new double[10];

以下图片代表数组 myList。在这里,myList 有10个 double 值,索引是从0到9。

201621885056282.jpg (450×243)

处理数组
当处理数组元素时,经常使用的是 loop 循环或 foreach 循环,因为一个数组中所有的元素是相同类型的并且数组的大小是已知的。

示例

下面是一个演示如何创建,初始化和处理数组的完整例子:

public class TestArray {

  public static void main(String[] args) {
   double[] myList = {1.9, 2.9, 3.4, 3.5};

   // Print all the array elements
   for (int i = 0; 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 引入了一个新的 for 循环被称为 foreach 循环或增强的 for 循环,它无需使用一个索引变量来完整的遍历数组。

示例

下面的代码显示数组 myList 中的所有元素:

public class TestArray {

  public static void main(String[] args) {
   double[] myList = {1.9, 2.9, 3.4, 3.5};

   // Print all the array elements
   for (double element: myList) {
     System.out.println(element);
   }
  }
}

这将产生以下结果:

1.9
2.9
3.4
3.5

将数组传递给方法
正如传递基本类型值的方法,也可以将数组传递给方法。例如,下面的方法显示在一个 int 数组中的元素:

public static void printArray(int[] array) {
 for (int i = 0; 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 

Arrays 类
java.util.Arrays 中的类包含各种静态方法用于排序和搜索数组、数组的比较和填充数组元素。这些方法为所有基本类型所重载。

SN 方法和描述
1 public static int binarySearch (Object[] a, Object key)
使用二进制搜索算法搜索对象的指定数组(字节,整数,双精度等)来指定值。该数组必须在进行此调用之前进行分类。如果它被包含在列表 (-(insertion point + 1), 将返回索引搜索关键字。
2 public static boolean equals (long[] a, long[] a2)
如果多头的两个指定数组彼此相等返回true。两个数组认为是相等判定方法:如果两个数组包含相同的元素数目,并在两个数组元素的所有相应对相等。如果两个数组相等,返回true。同样的方法可以用于所有其它的原始数据类型 (Byte, short, Int, etc.)
3 public static void fill(int[] a, int val)
将指定的int值到指定的int型数组中的每个元素。同样的方法可以用于所有其它的原始数据类型(Byte, short, Int etc.)
4 public static void sort(Object[] a)
将对象指定的数组升序排列,根据其元素的自然顺序。同样的方法可以用于所有其它的原始数据类型( Byte, short, Int, etc.)


推荐阅读
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • 线性Kalman滤波器在多自由度车辆悬架主动控制中的应用研究
    本文探讨了线性Kalman滤波器(LKF)在不同自由度(2、4、7)的车辆悬架系统中进行主动控制的应用。通过详细的仿真分析,展示了LKF在提升悬架性能方面的潜力,并总结了调参过程中的关键要点。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文探讨如何设计一个安全的加密和验证算法,确保生成的密码具有高随机性和低重复率,并提供相应的验证机制。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • 在金融和会计领域,准确无误地填写票据和结算凭证至关重要。这些文件不仅是支付结算和现金收付的重要依据,还直接关系到交易的安全性和准确性。本文介绍了一种使用C语言实现小写金额转换为大写金额的方法,确保数据的标准化和规范化。 ... [详细]
  • 在给定的数组中,除了一个数字外,其他所有数字都是相同的。任务是找到这个唯一的不同数字。例如,findUniq([1, 1, 1, 2, 1, 1]) 返回 2,findUniq([0, 0, 0.55, 0, 0]) 返回 0.55。 ... [详细]
  • 本文探讨了卷积神经网络(CNN)中感受野的概念及其与锚框(anchor box)的关系。感受野定义了特征图上每个像素点对应的输入图像区域大小,而锚框则是在每个像素中心生成的多个不同尺寸和宽高比的边界框。两者在目标检测任务中起到关键作用。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 深度学习理论解析与理解
    梯度方向指示函数值增加的方向,由各轴方向的偏导数综合而成,其模长表示函数值变化的速率。本文详细探讨了导数、偏导数、梯度等概念,并结合Softmax函数、卷积神经网络(CNN)中的卷积计算、权值共享及池化操作进行了深入分析。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
author-avatar
书友68610983
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有