当你通过MATLAB®data作为Java的参数®方法,MATLAB将数据转换为最能向Java语言表示数据的类型。有关将数据传递给类型参数时的类型映射的信息. lang
,请参阅传递Java对象.
下表中的每一行都显示了一个MATLAB类型,后面跟着可能的Java参数匹配,从左到右按照匹配的紧密程度排序。MATLAB类型(单元格数组除外)可以是标量(1乘1)数组或矩阵。Java类型可以是标量值或数组。
MATLAB的论点 | Java参数类型(标量或数组) 最近的类型 <———————————————————————> 至少近类型 |
||||||
---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|||
|
|
|
|
||||
|
|
||||||
|
|
||||||
类型的Java对象 |
Java |
的任何超类 |
|||||
对象的单元格数组 |
|
||||||
MATLAB对象 |
不支金宝app持的 |
这个词维表示寻址数组元素所需的下标数。例如,一个5 × 1的数组只有一个维度,因为您使用一个数组下标为单个元素建立索引。
在将MATLAB转换为Java数组时,MATLAB以一种特殊的方式处理维数。对于MATLAB数组,维数是数组中非单维数。例如,一个10 × 1数组的维数为1。然而,1 × 1数组的维数为0,因为您不能索引到标量值中。在Java代码中,嵌套数组的数量决定维数。例如,双[][]
维度是2,然后双
维数为0。
如果Java数组的维数与MATLAB数组中的维数匹配n
,则转换后的Java数组有n
维度。如果Java数组的值小于n
维度,然后转换删除单维度,从第一个维度开始。当剩余维度的数量与Java数组中的维度数量匹配时,转换停止。如果Java数组有超过n个维度,那么MATLAB会添加尾随的单例维度。
当将整数类型传递给接受Java整数参数的Java方法时,MATLAB转换与Java整型之间的转换相同。特别是,如果整数超出范围,则它不符合参数类型的位数。对于超出范围的整数,MATLAB丢弃所有最小值n
位。的值n
参数类型中的位数。这种转换不同于MATLAB整数类型之间的转换,后者将范围外的整数转换为目标类型表示的最大值或最小值。
如果参数是一个浮点数,那么MATLAB不会以与Java相同的方式将其转换为整数。MATLAB首先将浮点数转换为截断小数部分的64位有符号整数。然后该数字被处理,就好像它是一个int64
论点。
浮点数太大,不能用64位整数表示(在-2范围之外)63263.在这种情况下,MATLAB使用以下转换:
int
,短
,字节
参数值为0
.
长
参数值为java.lang.Long.MIN_VALUE
.
正
而且负
值-1
.
南
值0
.
调用Java方法,参数定义为以
,传递一个MATLAB字符串或字符向量。MATLAB将参数转换为Java字符串
对象。你也可以通过字符串
Java方法返回的对象。
方法参数为类型的数组字符串
,然后传递一个字符串数组或字符向量的单元格数组。MATLAB将输入转换为Java数组字符串
对象,其尺寸按数组尺寸如何影响转换.
要调用具有属于Java类(而不是Java类)的参数的方法java . lang . object
),您必须传递一个Java对象,该对象是该类的实例。MATLAB不支持Java自动装金宝app箱,将MATLAB类型自动转换为Java对象
类型。例如,MATLAB不进行转换双
来java.lang.Double
类型的参数双
.
java . lang . object
方法的参数时,会出现特殊情况java . lang . object
类。由于该类是Java类层次结构的根,因此可以在参数中传递任何类的对象。MATLAB自动将参数转换为最接近的Java对象
类型,其中可能包括java风格的自动装箱。下表显示了转换。
MATLAB的论点 |
Java |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Java对象 |
参数不变 |
单元阵列 |
|
MATLAB对象 |
不支金宝app持的 |
调用参数定义为的方法java . lang . object
或者一个数组java . lang . object
,传递一个Java数组或MATLAB单元格数组。中的描述,MATLAB自动将单元格数组元素转换为它们的Java类型通过java . lang . object表格Java数组是从Java构造函数返回的数组。方法在MATLAB中构造Java数组javaArray
函数。
要创建Java对象的单元格数组,请使用MATLAB语法{a1, a2,…}
.您可以使用下面的语法以通常的方式索引到Java对象的单元格数组中{m, n,…}
.例如,创建单元格数组一个
:
a1 = java.lang.Double(100);a2 = java.lang.Float(200);A = {a1,a2}
A = 1×2 cell array [1×1 java.lang。Double] [1×1 java.lang.Float]
MATLAB转换一个空矩阵如下。
如果参数为空字符向量,且参数声明为字符串
,然后MATLAB传入一个空的(不是零
) Java字符串
对象。
对于所有其他情况,MATLAB将空数组转换为Java数组零
.
空(0
-length) Java数组不变。
MATLAB转换< >失踪
字符串中的值零
.
当在Java对象上调用重载方法时,MATLAB将您传递的参数与为该方法定义的参数进行比较。在这种情况下,术语方法包括构造函数。MATLAB根据Java转换规则确定调用的方法并将参数转换为Java类型。有关更多信息,请参见传递对象数组.
当你调用一个Java方法时,MATLAB确保:
对象或类(对于静态方法)有一个同名的方法。
调用传递至少一个具有该名称的方法的相同数量的参数。
每个传递的参数都转换为为该方法定义的Java类型。
如果满足所有这些条件,则MATLAB调用该方法。
在对重载方法的调用中,如果有多个候选参数,MATLAB将选择具有最适合调用参数的参数。首先,MATLAB拒绝参数类型与传递的参数不兼容的方法。例如,如果方法有双
参数,即一个字符
争论是不相容的。
然后MATLAB选择具有最高适应度值的方法,该方法是其所有参数的适应度值之和。每个参数的适应度值是基本类型的适应度减去MATLAB数组维数和Java数组维数之间的差值。有关数组维数的信息,请参见数组尺寸如何影响转换.如果两个方法具有相同的适应度,则选择Java类中定义的第一个方法。