java中计算两向量点积需先校验数组非空且等长,否则抛出nullpointerexception或illegalargumentexception;再遍历对应元素相乘累加,注意数值类型溢出与精度问题,并封装为可复用的静态方法。

Java 中计算两个向量的点积,本质就是对两个相同长度的数组对应位置元素相乘后求和。关键在于确保数组长度一致、类型兼容,并避免空指针或越界异常。
确认数组长度相等
点积要求两个向量维度相同,即两个数组长度必须一致。否则抛出 IllegalArgumentException 是合理做法。
- 先检查
array1.length == array2.length - 若不等,直接抛异常或返回错误提示,不继续计算
- 长度为 0 时,点积结果为 0(数学定义)
逐元素相乘并累加
用一个循环遍历索引,将 array1[i] * array2[i] 累加到结果变量中。推荐使用 for 循环,清晰且高效。
- 基本类型(如
int[]、double[])直接运算 - 注意整数溢出:
int点积可能超范围,必要时用long或BigInteger -
double[]要留意浮点精度,但通常不影响多数应用场景
封装成可复用的方法
把逻辑写成静态方法,支持不同数值类型(可重载),提升代码复用性。
- 例如:
public static double dotProduct(double[] a, double[] b) - 内部做非空校验:
if (a == null || b == null)抛NullPointerException - 支持泛型需借助包装类或第三方库(如 Apache Commons Math),原生 Java 不支持泛型数组算术
简单示例代码
以 double[] 为例:
public static double dotProduct(double[] a, double[] b) {
if (a == null || b == null) throw new NullPointerException();
if (a.length != b.length) throw new IllegalArgumentException("Arrays must have same length");
double sum = 0.0;
for (int i = 0; i Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











