2012-01-20 9 views
3

가능한 중복은 :
Difference between int[] array and int array[]int [] x의 차이점은 무엇입니까? 및 int x [];

이 질문은 이미 요청되어 있는지 확인이었고, 단지 그것을 찾기 위해 제목을 썼다, 그러나 놀랍게도 그것은 아니었다. 나는 한 가지 문제를 해결하기 위해이 문제를 제기했다. 나는 이것을 시도했다 :

int[] x = new int[1]; 
int y[] = new int[1]; 
x=y; 
y=x; 

그리고 컴파일러는 나에게 오류를주지 않았다. 이 두 선언 사이에 어떤 차이가 있습니까?

답변

12

의미에 차이가 없습니다. 두 구문 모두 같은 의미입니다. JLS §10.2 일부 추출물 :

에서 [이 예에서와 같이, 선언의 시작 타입의 일부 또는 모두는 특정 변수, 위한 선언자의 일부로서 또는 나타날 수 그러나

byte rowvector[], colvector[], matrix[][]; 

:

byte[] rowvector, colvector, matrix[]; 

이 선언에 상당 , 아래의 코멘트에서 Voo 상태로, 단일 선언문에 여러 배열을 선언 할 때 이러한 선언에 대해 약간의 혼란이있을 수 있습니다.

+0

감사합니다. 나도 그렇게 생각했지만 확실히해야했습니다. – shift66

+2

한 줄에 둘 이상의 변수를 정의한 경우 (인용 된 부분이 이미 힌트를 표시) 차이가 있습니다. 즉 int [], b;는 int [] a, b;와 같지 않다. Imho 두 번째 변종을 사용하지 않는 것이 가장 좋습니다. 왜냐하면 혼란을 초래할 수 있기 때문입니다. 실제로 C와 iirc Bloch의 유산이기 때문에 나중에 언어에 포함 된 것을 후회한다고해도 잘못 될 수 있습니다. – Voo

+0

@Voo : 좋은 발언, 나는 아직 생각하지 못했습니다. 보통 한 줄에 여러 변수를 선언하는 것이 좋은 생각 인 것 같지만, 특히 형식이이 예제와 같지 않은 경우에는 ... –

7

차이는 없습니다.

C에서 쉽게 전환 할 수있는 구문당입니다. Java에서는 int[] x이 선호됩니다 (권장 됨).

1

아니요, 단지 맛의 문제 일뿐입니다. 어떤 사람들은 집계 타입 (집계 타입의 일부라고 생각하기 때문에)을 선호하기도하고, 다른 사람들은 변수 이름과 나란히 놓기를 선호합니다 (접근 구문에 더 가깝기 때문에).

관련 문제