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];
아마 부족한 설명이 있을 듯합니다. ^^;; 보시고 설명 답글로 주시면 감사~
-----------------------------------------------------------------------------
| 땅 위엔 | 정말 설명 잘 하시네요.. 세미나는 성공적일꺼 같은데요.. | [2004/09/23] |
| 롱~이* | ^^;; 아닙니다... 지금 공부하면서 하잖아요..ㅋㅋ 아마 설명 같은건.. 예전에 학원에서 강의 했을 때 남은 버릇인듯합니다.. | [2004/09/23] |
| 플밍지기 | 1. a,b 2. e 3. c 4. d 5. 문제없음 6. b d f 7. b 맞을랑가 모르겠네용. ^^; 혼자 딴생각해보기.. String myArgs[] = new myArgs[100]; 에서 myArgs를 class로 만들고.. String 클래스를 상속 받으면.. 저렇게 해도 무관하지 않을까요? 자동으로 캐스팅이 될테니까요.. but 문제점은 String 클래스는 상속할 수 없다는 것입니다. 왜냐면.. final 클래스이기 때문에.. | [2004/09/23] |
| 롱~이* | 클래스를 배열로 넣을려면 myArgs[] Args = new myArgs[100]; 이런 형식이 되어야겠죠.. 플밍지기님 말처럼 String은 final 클래스 이기때문에 상속을 할 수 없답니다.~ ^^ | [2004/09/24] |