当你通过MATLAB®数据作为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 . 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中使用javaArray
函数。
要创建Java对象的单元格数组,请使用MATLAB语法{a1, a2,…}
.您可以按照通常的方式,使用语法,在Java对象的单元格数组中建立索引{m, n,…}
.例如,创建单元格数组一个
:
a1 = java.lang.Double (100);a2 = java.lang.Float (200);一个= {a1, a2}
A = 1×2 cell array [1×1 java.lang. html]双][1×1 java.lang.Float]
MATLAB对空矩阵的转换如下。
如果实参为空字符向量,且形参声明为字符串
,然后MATLAB传入一个空(不零
) Java字符串
对象。
对于所有其他情况,MATLAB将空数组转换为Java零
.
空(0
Java数组保持不变。
MATLAB转换< >失踪
字符串中的值零
.
当调用Java对象上的重载方法时,MATLAB会将传递的参数与为方法定义的参数进行比较。在这种情况下,这个术语方法包括构造函数。MATLAB根据Java转换规则确定调用方法并将参数转换为Java类型。有关更多信息,请参见传递对象数组.
当你调用Java方法时,MATLAB确保:
对象或类(对于静态方法)有一个同名的方法。
调用传递至少一个同名方法的相同数量的参数。
传递的每个参数都被转换为为方法定义的Java类型。
如果这些条件都满足,则MATLAB调用该方法。
在对重载方法的调用中,如果有多个候选方法,MATLAB会选择一个参数最适合调用参数的候选方法。首先,MATLAB拒绝参数类型与传递的参数不兼容的方法。例如,如果方法有双
参数,即一个字符
参数是不相容的。
然后MATLAB选择适应度值最高的方法,即其所有参数的适应度值之和。每个参数的适应度值是基类型的适应度减去MATLAB数组维数和Java数组维数之间的差。有关数组维数的信息,请参见数组维度如何影响转换.如果两个方法具有相同的适应度,则选择Java类中定义的第一个方法。