2. 다음 중 컴파일 했을 때 문제없는 코드는 무엇입니까?
a. String[] args = { "100" };
b. int values[] = 1;
c. int values[3] = {10, 20, 30};
d. boolean switches = new boolean[3];
e. String myArgs[] = new myArgs[100];
f. int val[][] = new val[][3];
-----------------------------------------------------------------
제가 보기엔 2번의 답은 a인듯 합니다~ ^^
a. 일반적인 컴파일상 에러가 생기지만 main의 변수를 바꾸면 아무런 문제가 없습니다.
【 args is already defined in main(java.lang.String[]) 】
이 내용은 이미 main에서 String[] args를 선언을 했다는 내용입니다.
그럼 에러가 안생기게 할려면요??
public static void main(String[] args)
여기서 args의 변수만 바꿔주면 됩니다. 다른 이름으로.
public static void main(String[] arg)
이런식으로요~ ^^
b. 컴파일에 에러가 생깁니다
【 incompatible types 】
타입이 호환이 되지 않는다.. 다시 말해 타입이 맞지 않는다는 내용이네요.. ^^;;
얘를 컴파일상 에러가 생기지 않게 하기 위해서는 배열로 선언 해주었으니..
변수에도 배열의 법칩에 따라 {}를 써주면 타입이 맞답니다.
한번 고쳐볼까요?
int values[] = {1};
c. 컴파일에 에러가 생깁니다.
【 ']' expected 】
문제 1번에서 설명한 내용이죠??
배열 안에 숫자를 써주어서 ']'를 인식 못해 ']'를 써달라는 에러라고..
결론은 자바 rule에 맞지 않는다는...
자세한 내용이 좀 더 궁금하시다면 1번 문제의 풀이를 보세요~ ^^
d. 컴파일에 에러가 생깁니다.
【 incompatible types 】
타입이 호환이 되지 않는다.. b.와 똑같은 에러네요.. ^^;;
그럼 컴파일이 되게 한번 바꿔 볼까요??
boolean[] switches = new boolean[3];
boolean에 배열을 지정해 주었으니 앞에 boolean에 배열을 써주면 타입이 똑같겠죠?
e. 컴파일에 에러가 생깁니다.
【 incompatible types 】
타입이 호환이 되지 않는다.. 위와 똑같죠??
근데 차이점이 무엇인지 아십니까? 위에서는
1. boolean[] switches = new boolean[3]; -> 맞는 코드
2. String myArgs[] = new myArgs[100];
1. 번은 type을 배열로 지정해주었습니다. 그러니 새로 생성을 해도 컴파일이 되는것이죠.
2. 번은 객체를 생성하는 것입니다. 앞에 String이라고 쓰고 뒤에 myArgs[]배열을 쓰고 말이죠... 저 자체의 식이 자바의 rule에 어긋 납니다.
※ 배열도 객체입니다. 무조건 객체입니다. 원시변수로 선언을해도 객체입니다.
원시 배열 같은 것은 없습니다.. 원시 변수가 들어있는 배열이 있을 뿐이죠..
f. 컴파일상 에러가 생깁니다.
【 ']' expected
c.의 내용 참고하세요~ ^^
【 array dimension missing 】
배열의 차원이 맞지 않는다네요.. 그리고 식도 틀렸죠?
어떻게 고치면 될까요?
int val[][] = new int[2][3];
아마 부족한 설명이 있을 듯합니다. ^^;; 보시고 설명 답글로 주시면 감사~
-----------------------------------------------------------------------------