Java를 처음 접하기 때문에 class 와 type 의 개념이 혼동 됩니다. 예를 들어, 객체 "Hello World!"
가 유형 String
또는 클래스에 속해야 String
합니까? 아니면 둘 다?
답변
클래스는 유형입니다. 인터페이스는 유형입니다. 프리미티브는 유형입니다. 배열은 유형입니다.
따라서 모든 유형은 클래스 (열거 형 상수 포함), 인터페이스, 프리미티브 또는 배열이기도합니다.
유형에는 기본 유형과 참조 유형의 두 가지 유형이 있습니다.
- 기본 유형의 변수는 항상 동일한 유형의 기본 값을 보유합니다. 이러한 값은 해당 변수에 대한 할당 작업을 통해서만 변경할 수 있습니다.
- 참조 유형의 변수는 항상 객체에 대한 참조 값을 보유합니다. 배열을 포함한 모든 객체는 class의 메소드를 지원합니다
Object
. 참조 유형은 클래스 유형 (열거 형 유형 포함), 인터페이스 유형 및 배열 유형입니다.
모든 데이터에는 구조를 정의하는 유형이 있습니다. 즉, 차지하는 메모리 양, 배치 방법, 더 중요한 것은 데이터와 상호 작용할 수있는 방법입니다.
기본 유형의 예 :
int
float
char
boolean
클래스 유형의 예 :
인터페이스 유형의 예 :
배열 유형의 예 :
int[]
String[]
Integer[][][]
기본적으로 변수로 참조 할 수있는 모든 것에는 유형이 있으며 클래스는 일종의 유형입니다.
자세한 정보 : http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html
답변
TLDR- 클래스는 Java의 유형 중 하나입니다.
주-답을 완전히 이해하려면 Java의 제네릭에 대한 약간의 아이디어가 있어야합니다.
차이점을 이해하기 위해 먼저 Java에서 유형 이 무엇인지 이해합시다 .
JLS SE 10 에 따르면 ,
Java 프로그래밍 언어에는
기본 유형 ( §4.2 )과 참조 유형 ( §4.3 ) 의 두 가지 유형이 있습니다 .
원시 유형이란 무엇입니까?
a) 정수 유형은 byte, short, int 및 long 이며 값은 각각 8 비트, 16 비트, 32 비트 및 64 비트 부호있는 2의 보수 정수 이고 값이 16 비트 인 char UTF-16 코드 단위를 나타내는 부호없는 정수 (§3.1).
b) 부동 소수점 유형은 값이 32 비트 IEEE 754 부동 소수점 숫자를 포함하는 float 및 값이 64 비트 IEEE 754 부동 소수점 숫자를 포함하는 double 입니다.
c) 부울 유형에는 정확히 두 가지 값, 즉 true와 false가 있습니다.
이제 참조 유형이란 무엇입니까?
참조 유형에는 클래스 유형 ( §8.1 ), 인터페이스 유형 ( §9.1 ), 유형 변수 ( §4.4 ) 및 배열 유형 ( §10.1 )의 네 가지 종류가 있습니다 .
하나씩 논의합시다.
JLS에서 어떻게 보면 Class 는 다음과 같이 정의됩니다.
클래스 선언은 새로운 지정된 참조 유형을 지정합니다.
클래스 선언에는 일반 클래스 선언과 열거 형 선언 의 두 가지 종류가 있습니다 .
ClassDeclaration:
NormalClassDeclaration
EnumDeclaration
NormalClassDeclaration:
{ClassModifier} class TypeIdentifier [TypeParameters] [Superclass] [Superinterfaces] ClassBody
당신은 그 참조 [TypeParameters]
클래스 형식도 그 일반적인 클래스를 포함,이 쇼를.
class Example<T>{
}
클래스 유형이 호출됩니다. Example
간단히 말해서, 클래스 유형은 열거 형, 일반 (일반이 아닌) 클래스, String
etc와 같은 일반 클래스도 포함합니다.
마찬가지로 인터페이스 및 배열 유형도 명확하기를 바랍니다. 배열 형식으로 우리는 같은 의미 int[]
, String[]
등
마지막 부분 인 유형 변수에 대해 살펴 보겠습니다. 그들은 무엇인가 ?
형식 변수는 클래스, 인터페이스, 메서드 및 생성자 본문에서 형식으로 사용되는 규정되지 않은 식별자입니다.
아래 JLS의 예를 통해 이해합시다.
class Test {
<T extends C & I> void test(T t) {
t.mI(); // OK
t.mCPublic(); // OK
t.mCProtected(); // OK
t.mCPackage(); // OK
}
}
method 매개 변수의 개체가 유형임을 알 수 있습니다 T
. 예, 이것은 T
유형 변수이며 참조로 사용할 수 있습니다. 네, 그렇습니다. (이 이상한 예를 이해할 수 없습니다-Java의 일반 메소드가 무엇인지 알아보십시오)
이것으로 답이 완성되었습니다.
답변
“유형”은 더 포괄적 인 범주입니다. Java의 변수는 세 가지 유형을 가질 수 있습니다. int 및 float, 인터페이스 및 클래스와 같은 8 개의 “기본”유형입니다. 값 (변수와 반대)은 기본 또는 클래스 인스턴스 일 수 있습니다.
답변
“유형”은 ‘데이터 유형’을 정의합니다.
예 : “hello world”는 문자열입니다.-> “hello world”는 문자열 유형입니다.
10은 정수-> 10은 정수 데이터 유형입니다.