主要内容

通过数据Java方法

MATLAB类型Java类型映射

当你通过MATLAB®数据作为Java的参数®方法,MATLAB将数据转换为最能代表Java语言的数据类型。以获取在将数据传递给类型参数时有关类型映射的信息. lang,请参阅通过Java对象

下表中的每一行显示了MATLAB类型,后面跟着可能的Java参数匹配,按照匹配的紧密程度从左到右。MATLAB类型(单元格数组除外)可以是标量(1 × 1)数组或矩阵。Java类型可以是标量值或数组。

MATLAB的论点

Java参数类型(标量或数组)
对象以外的类型

最近的类型 <———————————————————————> 至少近类型

逻辑

布尔

字节

int

浮动

浮动

int

字节

布尔

浮动

uint8
int8

字节

int

浮动

uint16
int16

int

浮动

uint32
int32

int

浮动

uint64
int64

浮动

字符串标量,
特征向量,
字符标量

字符串

字符串数组,
字符向量的单元格数组
看到通过字符串参数

String []

类型的Java对象jClass

Java对象类型的jClass

的任何超类jClass

对象单元格数组

对象[]

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对象在包. lang

逻辑

布尔

浮动

字符标量

字符

字符串标量
非空的字符向量

字符串

uint8
int8

字节

uint16
int16

uint32
int32

整数

uint64
int64

字符串阵列(nonscalar)
字符向量的单元格数组

String []

Java对象

参数不变

单元阵列

对象[]

MATLAB对象

不支金宝app持的

传递对象数组

调用参数定义为的方法java . lang . object或者一个数组java . lang . object,传递Java数组或MATLAB单元数组。MATLAB自动地将单元格数组元素转换为Java类型,如通过java . lang . object表格Java数组是从Java构造函数返回的数组。也可以在MATLAB中使用javaArray函数。

通过单元阵列Java对象

要创建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

空(0Java数组保持不变。

MATLAB转换< >失踪字符串中的值

重载方法

当调用Java对象上的重载方法时,MATLAB会将传递的参数与为方法定义的参数进行比较。在这种情况下,这个术语方法包括构造函数。MATLAB根据Java转换规则确定调用方法并将参数转换为Java类型。有关更多信息,请参见传递对象数组

当你调用Java方法时,MATLAB确保:

  1. 对象或类(对于静态方法)有一个同名的方法。

  2. 调用传递至少一个同名方法的相同数量的参数。

  3. 传递的每个参数都被转换为为方法定义的Java类型。

如果这些条件都满足,则MATLAB调用该方法。

在对重载方法的调用中,如果有多个候选方法,MATLAB会选择一个参数最适合调用参数的候选方法。首先,MATLAB拒绝参数类型与传递的参数不兼容的方法。例如,如果方法有参数,即一个字符参数是不相容的。

然后MATLAB选择适应度值最高的方法,即其所有参数的适应度值之和。每个参数的适应度值是基类型的适应度减去MATLAB数组维数和Java数组维数之间的差。有关数组维数的信息,请参见数组维度如何影响转换.如果两个方法具有相同的适应度,则选择Java类中定义的第一个方法。

相关的话题