== 연산자는 기본 타입일 때에는, 두 대상이 동일한지를 비교합니다. 그러면 그 대상들이 object일 때에는 어떻게 동작할까요? 같은 객체인지를 비교합니다. 즉, 같은 object를 가르키는지를 검사합니다. 그렇다면 True이고, 아니라면 false입니다. 정말 이것이 다인가요? 네. 내용이 동일한지를 검사하기 위해서는 equals 메서드를 오버라이딩을 할 수 있는데요. 이는 다음에 언급해 드리도록 하겠습니다. 예제 1번 프로그램을 봅시다. Point 클래스가 있습니다. 이 안에는 필드 x, y가 있네요. 15번째 줄과, 16번째 줄에 Point 객체를 생성합니다. 그리고 17번째 줄에서 a == b인지를 검사합니다. 결과는 어떻게 나올까요? new 연산자는 힙에다가 객체를 생성합니다. 즉, 15번째 ..
코딩/Java 검색 결과
call by value, 즉 값 복사 호출 방식은 반드시 알고 넘어가셔야 하는 개념 중 하나입니다. 이것은 간단하게 말해서, 함수에 값이 전달이 될 때, 값이 copy 되어서 전달이 된다는 겁니다. 즉, 사본이 전달이 되는 셈입니다. 다음 프로그램을 보면서 간단하게 이해를 해 보도록 하겠습니다. 라인 바이 라인으로 끊어서 이해를 해 보도록 하겠습니다. 먼저, 5번째 줄과 6번째 줄에 a가 선언이 되고, b가 선언됩니다. 이 때, a에는 5가, b에는 3이 들어갑니다. 그러면 이 상황입니다. 그 다음에 swap 함수가 호출이 되는데요. 이 때, a와 b의 값을 넘겨줍니다. 이 때, 메모리 상황을 그려보면 위와 같습니다. 다음에, 12번째 줄에 t가 선언이 되었는데요. swap 내에서 선언이 되었기 때문에..
Java에는 for each문이 있습니다. 카운터 변수와 증감식을 사용하지 않는 for문인데요. 배열이나 Collections 등에서 쓸 수 있습니다. 이런 식으로 쓸 수 있습니다. for(타입 변수: 순회할 Collection이나 배열 이름) 더 정확히 말하면, iterable이 가능한 것만 노란색으로 칠한 것에 쓸 수 있습니다. 저는 이 문법을 설명하기 위해서 포스팅을 쓰지 않았습니다. arrayList에 for each 문을 쓰면 어떻게 동작하는지 알아보겠습니다. 먼저, 초기화가 되어야 할 건데요. 우리는 ArrayList를 순회할 때, 인덱스를 줄 수도 있습니다. 하지만, 이터레이터를 줄 수도 있는데요. 여기서, iterator란, 어떠한 요소를 순회하기 위한 반복자 정도로 생각하시면 됩니다. 1..
오늘은 간단하게 Wrapper 클래스에 대해서 알아봅시다. 우리는 기본 타입을 어떠한 이유로 Wrapping을 해야 하는 경우가 생기는데요. 예를 들자면, ArrayList에 값을 집어넣을 때 기본 타입을 넣을 수 없어요. 그러면 wrapping 해서 넣어야 합니다. 이것을 Boxing이라고 합니다. 반대로, Integer 타입을 int로, 그러니까 값을 얻어낼 수가 있는데요. 이를 언박싱이라고 합니다. 요것을 그림으로 도식화 시키면 아래와 같습니다. 보시면 박스 안에 real Value가 들어가 있음을 알 수 있어요. 초록색으로 칠한 상자는 Integer 객체인데요. 이 안에, 5000이라는 실제 값이 들어가 있음을 알 수 있어요. 먼저, 기본값을 boxing 해 봅시다. 먼저 생성자를 이용한 방법이 ..
class 안에는 여러 가지 필드들이 있습니다. 그 중에 static이 붙은 것도 있고, 아닌 것도 있을 겁니다. 클래스 안에 static으로 선언된 것들을 Java에서는 클래스 변수라고 이야기를 합니다. 설계자 분들이 요 키워드를 대체 어떤 기준으로 붙였을까요? 예제 프로그램을 봅시다. My_Obj에는 2개의 필드가 있습니다. 하나는 iv, 다른 하나는 cv입니다. 먼저 My_Obj 객체 a를 생성합니다. 그리고 a.iv에 2를, a.cv에 1을 넣습니다. 그 다음에 a의 필드 값들을 출력하고 있어요. 다음에, b를 생성하고 b.iv와 b.cv에 각각 5, 5를 넣고 b의 필드 값들을 출력하고 있습니다. 그 다음에 다시, a의 필드 값들을 print 하고 있어요. 그러면 출력 결과가 어떻게 나올까요? ..
최근댓글