오늘 java 강의 자료 만들다가 java 기본을 다시금 회상해 보자는 의미에서 질문 올립니다.
import java.util.ArrayList;
import junit.framework.TestCase;
public class ArrayListTest extends TestCase {
public void testArray() throws Exception {
String[] list = new String[10];
int index = 0;
list[index++] = "first";
System.out.println(index);
list[index++] = "second";
System.out.println(index);
assertEquals("first", list[0]);
}
}
위와 같이 구현할 경우 assertEquals의 결과는 참일까요. 거짓일까요? 증감 연산자에 대해 명확히 이해하고 있다면 쉽게 풀 수 있는 문제입니다.
import java.util.ArrayList;
import junit.framework.TestCase;
public class ArrayListTest extends TestCase {
public void testArray() throws Exception {
String[] list = new String[10];
int index = 0;
list[++index] = "first";
System.out.println(index);
list[++index] = "second";
System.out.println(index);
assertEquals("first", list[0]);
}
}
그렇다면 위와 같이 증감 연산자가 앞에 온다면 결과가 어떻게 될까요?
3개의 의견 from SLiPP
눈으로 짐작컨데 첫번째 것은 성공, 출력은 1 2 두번째 것은 실패. 출력은 1 2 인가요?
@lark 정확하게 알고 계시네요. 이 질문을 한 이유는 제가 어제 ArrayList의 add 메소드 소스 확인하다가 확실하지 않아서 위 소스 코드를 만들어 확인을 했거든요. 이 부분이 학습할 때는 알겠다가 실제로 소스 코드를 보면 항상 헷갈리는 부분이네요.
이 소스 코드를 다시 한번 확인해 보죠.
위 소스 코드는 다음과 같습니다.
또한 다음과도 같죠.
한 단계 더 나가면 다음 코드와 같습니다.
마지막 소스 코드를 축약해서 사용하기 위해 list[index++]로 사용했는데요. 실제 현업에서는 어떤 방식으로 구현하는 것이 좋을까요? 자바 기본은 이미 알고 있다는 가정하에 list[index++]이 좋을까요? 아니면 좀 더 직관적으로 이해하기 쉬운 방법을 선택하는 것이 좋을까요?
이 소스 코드를 보면서 잠시 엉뚱한 생각을 해 봤네요. 요즘 자바 강의를 준비하면서 자바를 처음부터 다시 보고 있는데 제가 모르고 있었던 것이 많네요. 역시나 실제로 실무에 사용하는 것과 누군가를 가르치는 것이 많이 다르다는 생각을 합니다.
java를 떠나 모든 프로그래밍을 처음 접하는 친구들 대상이라면 연산자가 우선 친숙해지는게 좋을 것 같아요. String type의 array 선언을 뜻하는 것도, type과 variable 의 차이도 이해하는데 오래걸렸던 것 같네요 전 ㅠㅠ 이게 익숙해진 후에 javascript 를 처음 접하면 또 다른 신세계.. 그랬던 것 같아요 ㅋ
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.