증감 연산자에 대한 질문입니다.

2013-01-22 17:23

오늘 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

2013-01-23 09:34

@lark 정확하게 알고 계시네요. 이 질문을 한 이유는 제가 어제 ArrayList의 add 메소드 소스 확인하다가 확실하지 않아서 위 소스 코드를 만들어 확인을 했거든요. 이 부분이 학습할 때는 알겠다가 실제로 소스 코드를 보면 항상 헷갈리는 부분이네요.

이 소스 코드를 다시 한번 확인해 보죠.

  public void testArray() throws Exception {
    String[] list = new String[10];
    int index = 0;
    list[index++] = "first";
    list[index++] = "second";
    assertEquals("first", list[0]);
  }

위 소스 코드는 다음과 같습니다.

	public void testArray() throws Exception {
		String[] list = new String[10];
		int index = 0;
		list[index] = "first";
		index++;
		list[index++] = "second";
		assertEquals("first", list[0]);
	}

또한 다음과도 같죠.

	public void testArray() throws Exception {
		String[] list = new String[10];
		int index = 0;
		list[index] = "first";
		index += 1;
		list[index++] = "second";
		assertEquals("first", list[0]);
	}

한 단계 더 나가면 다음 코드와 같습니다.

	public void testArray() throws Exception {
		String[] list = new String[10];
		int index = 0;
		list[index] = "first";
		index = index + 1;
		list[index++] = "second";
		assertEquals("first", list[0]);
	}

마지막 소스 코드를 축약해서 사용하기 위해 list[index++]로 사용했는데요. 실제 현업에서는 어떤 방식으로 구현하는 것이 좋을까요? 자바 기본은 이미 알고 있다는 가정하에 list[index++]이 좋을까요? 아니면 좀 더 직관적으로 이해하기 쉬운 방법을 선택하는 것이 좋을까요?

이 소스 코드를 보면서 잠시 엉뚱한 생각을 해 봤네요. 요즘 자바 강의를 준비하면서 자바를 처음부터 다시 보고 있는데 제가 모르고 있었던 것이 많네요. 역시나 실제로 실무에 사용하는 것과 누군가를 가르치는 것이 많이 다르다는 생각을 합니다.

2013-01-23 10:31

java를 떠나 모든 프로그래밍을 처음 접하는 친구들 대상이라면 연산자가 우선 친숙해지는게 좋을 것 같아요. String type의 array 선언을 뜻하는 것도, type과 variable 의 차이도 이해하는데 오래걸렸던 것 같네요 전 ㅠㅠ 이게 익숙해진 후에 javascript 를 처음 접하면 또 다른 신세계.. 그랬던 것 같아요 ㅋ

의견 추가하기

연관태그

← 목록으로