主要内容

Java메서드에데이터하기

MATLAB데이터형과Java데이터형 간 매핑

MATLAB®데이터를 Java®메서드에 인수로 전달할 경우 MATLAB은 이 데이터를 Java 언어에서 가장 잘 나타낼 수 있는 유형으로 변환합니다. 데이터를java.lang유형의 인수로 전달할 때 유형 매핑에 대한 자세한 내용은Java객체전달하기항목을참조하십시오。

다음 표의 각 행에는 MATLAB 데이터형과 함께, 그에 상응하는 Java 인수가 왼쪽부터 오른쪽으로 근사한 정도 순으로 나와 있습니다. MATLAB 데이터형(셀형 배열 제외)은 스칼라(1×1) 배열 또는 행렬일 수 있습니다. Java 데이터형은 스칼라 값 또는 배열일 수 있습니다.

matlab인수

Java 파라미터 유형(스칼라 또는 배열)
객체 이외의 유형

가장 가까운 유형 <———————————————————————> 가장 거리가 먼 유형

logical

布尔

byte

short

int

long

漂浮

double

double

double

漂浮

long

int

short

byte

布尔

single

漂浮

double

uint8
int8

byte

short

int

long

漂浮

double

uint16
INT16

short

int

long

漂浮

double

uint32
int32

int

long

漂浮

double

uint64
int64

long

漂浮

double

string형,
문자형 벡터,
char형 스칼라

String

string형,
문자형벡터로구성셀형배열
string형 인수 전달하기참조.

String[]

JCLASS유형java객체

JCLASS유형javaObject

JCLASS의 모든 슈퍼클래스

객체로 구성된 셀형 배열

Object[]

MATLAB 객체

지원 안 됨

배열 차원이 변환에 미치는 영향

차원이라는 용어는 배열의 요소를 지칭하는 데 필요한 첨자 개수를 의미합니다. 예를 들어, 5×1 배열의 경우 하나의 배열 첨자를 사용하여 개별 요소를 참조하므로 1차원입니다.

MATLAB 배열을 Java 배열로 변환할 때, MATLAB은 특수한 방식으로 차원을 처리합니다. MATLAB 배열에서, 차원은 배열의 비한원소 차원 개수입니다. 예를 들어, 10×1 배열의 차원은 1입니다. 반면, 1×1 배열의 차원은 0입니다. 스칼라 값의 요소는 참조할 수 없기 때문입니다. Java 코드에서는 중첩 배열의 수에 따라 차원이 결정됩니다. 예를 들어,双倍的[][]의 차원은 2이고double의 차원은 0입니다.

Java 배열의 차원 수가 MATLAB 배열의 차원 수n과 일치하는 경우, 변환된 Java 배열은n차원을 가집니다. Java 배열의 차원 수가n보다 더 적을 경우, 변환 과정에서 첫 번째 차원부터 시작하여 한원소 차원을 삭제합니다. 남은 차원의 수가 Java 배열의 차원 수와 일치하면 변환이 중지됩니다. Java 배열의 차원 수가 n보다 더 많을 경우, MATLAB은 후행 한원소 차원을 추가합니다.

숫자를 정수 인수로 변환하기

Java 정수 파라미터를 받는 Java 메서드에 정수형을 전달할 때 MATLAB 변환은 Java에서의 정수형 간 변환과 동일합니다. 특히, 정수가 범위를 벗어나는 경우 이 정수는 파라미터 유형의 비트 수에 맞지 않습니다. 범위를 벗어난 정수에 대해 MATLAB은 가장 낮은n개 비트를 모두 버립니다. 값n은파라미터의수입니다。이변환를정수가대상유형표현되는이나이나최솟값으로으로변환변환되는되는되는되는되는되는되는되는되는정수형정수형정수형정수형정수형정수형정수형변환과。

인수가 부동소수점 숫자인 경우 MATLAB은 Java와 같은 방식으로 이 인수를 정수로 변환하지 않습니다. MATLAB은 먼저 부동소수점 숫자를 부호 있는 64비트 정수로 변환합니다(소수부는 잘림). 그러면 이 숫자는int64형인수인처럼됩니다됩니다。

부동소수점 숫자가 -263에서 263사이범위벗어나면너무커서커서커서비트정수로표현없습니다없습니다없습니다없습니다없습니다。이matlab은은같은을합니다합니다합니다。

  • int,shortbyte파라미터 값은0으로변환。

  • long파라미터 값은java.lang.Long.MIN_VALUE로 변환.

  • inf값과-Inf값은-1로 변환.

  • NaN값은0으로변환。

string형 인수 전달하기

java.lang.String으로 정의된 인수를 갖는 Java 메서드를 호출하려면 MATLAB string형 또는 문자형 벡터를 전달하십시오. MATLAB은 이 인수를 JavaString객체로변환합니다. Java 메서드에 의해 반환된String객체를할있습니다있습니다。

메서드인수가String유형으로 구성된 배열인 경우에는 string형 배열이나 문자형 벡터로 구성된 셀형 배열을 전달하십시오. MATLAB은 이 입력값을배열 차원이 변환에 미치는 영향에설명대로차원을하여하여String객체로된된배열배열변환합니다합니다합니다。

Java객체 전달하기

java.lang.Object이외의 Java 클래스에 속한 인수를 갖는 메서드를 호출하려면 해당 클래스의 인스턴스인 Java 객체를 전달해야 합니다. MATLAB은 MATLAB 유형을 JavaObject유형으로 자동 변환하는 Java 오토박싱(Autoboxing)을 지원하지 않습니다. 예를 들어, MATLAB은双倍的유형의 파라미터에 대해doublejava.lang.Double로 변환하지 않습니다.

java.lang.Object전달하기

메서드가java.lang.Object클래스의 인수를 받는 특수한 경우가 있습니다. 이 클래스는 Java 클래스 계층 구조의 루트이므로, 어떤 클래스의 객체든지 인수로 전달할 수 있습니다. MATLAB은 자동으로 인수를 가장 가까운 JavaObject유형으로 변환합니다. 이때 Java 스타일 오토박싱이 발생할 수 있습니다. 다음 표에는 이 변환이 나와 있습니다.

matlab인수

패키지java.lang의 JavaObject

logical

Boolean

double

双倍的

single

Float

char형 스칼라

特点

string형 스칼라
비어 있지 않은char형벡터

String

uint8
int8

Byte

uint16
INT16

Short

uint32
int32

Integer

uint64
int64

Long

string형 배열(비 스칼라)
문자형벡터로구성셀형배열

String[]

Java객체

인수가 변경되지 않음

셀형 배열

Object[]

MATLAB 객체

지원 안 됨

객체로된배열전달하기

java.lang.Object또는java.lang.Object의 배열로 정의된 인수를 갖는 메서드를 호출하려면 Java 배열이나 MATLAB 셀형 배열을 전달하십시오. MATLAB은java.lang.Object 전달하기표에대로셀형요소를그에상응하는하는하는유형유형유형자동으로변환합니다합니다。Java java java생성자에서되는배열입니다입니다。javaArray함수를 사용하여 MATLAB에서 Java 배열을 생성할 수도 있습니다.

Java객체로구성된셀형배열전달하기

java객체로된셀형배열을만들려면만들려면만들려면{a1,a2,...}를사용하십시오。구문a {m,n,...}을사용적인으로으로,java객체로된셀형의요소를참조합니다참조합니다。예를,다음과다음과셀형배열A를 만들어 보십시오.

a1 = java.lang.Double(100); a2 = java.lang.Float(200); A = {a1,a2}
a = 1×2个单元格数[1×1 java.lang.double] [1×1 java.lang.float]

빈,null,누락누락값하기하기

MATLAB은 빈 행렬을 다음과 같이 변환합니다.

  • 인수가문자형벡터이고가가String으로선언된,matlab은无效的이 아니라 빈 JavaString객체를 전달합니다.

  • 그외의경우,matlab은은배열을을无效的로 변환합니다.

빈(길이0) Java 배열은 변경되지 않은 상태로 유지됩니다.

MATLAB은 string형 내의<缺少>값을无效的로 변환합니다.

오버로드된 메서드

Java객체에서 오버로드된 메서드를 호출할 경우 MATLAB은 사용자가 전달하는 인수와 메서드에 대해 정의된 인수를 비교합니다. 이 맥락에서메서드라는용어생성자포함합니다。matlab은호출메서드결정하고하고하고변환변환에따라인수를를를를유형유형유형합니다。자세한내용은객체로된배열전달하기항목을참조하십시오。

Java 메서드를 호출할 경우 MATLAB은 다음 사항을 확인합니다.

  1. 객체 또는 클래스(정적 메서드의 경우)에 해당 이름의 메서드가 있는지 확인합니다.

  2. 호출 시 해당 이름을 가진 하나 이상의 메서드의 인수를 같은 수만큼 전달하는지 확인합니다.

  3. 전달된가메서드에정의정의된된유형유형변환합니다합니다합니다합니다。

이러한 조건이 모두 충족될 경우 MATLAB은 메서드를 호출합니다.

오버로드된 메서드를 호출할 때, 둘 이상의 후보가 있을 경우 MATLAB은 호출하는 인수와 가장 잘 맞는 인수를 갖는 메서드를 선택합니다. 먼저, MATLAB은 전달된 인수와 호환되지 않는 인수 유형을 갖는 메서드는 기각합니다. 예를 들어, 메서드가double형 인수를 갖는 경우char형 인수는 호환되지 않습니다.

그런 다음, MATLAB은 모든 인수의 적합도 값의 합인, 가장 높은 적합도 값을 갖는 메서드를 선택합니다. 각 인수의 적합도 값은 기본 유형의 적합도에서 MATLAB 배열 차원과 Java 배열 차원 사이의 차이를 뺀 값입니다. 배열 차원 수에 대한 자세한 내용은배열 차원이 변환에 미치는 영향항목을참조하십시오。두 메서드의 적합도가 같을 경우에는 Java 클래스에 먼저 정의된 메서드가 선택됩니다.

관련 항목