Java에서 배열은 어떻게 쓸까요? C언어에서의 배열과 똑같습니다. 다만, 자바에서는 배열이 실제로 객체이기 때문에, Heap 영역에 생성이 된다는 것 정도의 차이밖에 없어요. 그리고 크기가 고정되어요. 즉, 고정 힙 배열, fixed heap array 정도로 생각하면 좋겠습니다. 예제 프로그램 1을 봅시다. 일단, 우리는, 크기가 2인 int형 배열 arr을 선언하려고 합니다. 그러면, int arr[] = new int[2]; 이렇게 선언할 수 있어요. int형을 저장할 수 있는 2개의 공간을 할당한다는 건데요. 일단 6번째 줄까지 수행이 되면, 메모리에 다음과 같이 저장이 됩니다. arr이 int형을 2개 저장할 수 있는 공간을 가리키고 있어요. arr은 스택에, 실제로 real int를 2개 저..
코딩/Java 검색 결과
이런 질문을 많이 받았습니다. String a와 String b가 있다면, a == b는 false이지 않나요? 사실 참조 타입에서 == 연산자는 가리키는 객체가 다르면 false를 리턴합니다. 그런데, 이 친구는 희안하게도, pool이 있습니다. 그리고 이상하게 생겨먹은 함수인 intern() 메서드가 있는데요. 자바에서 문자열을 선언했을 때, 어떤 식으로 동작하는지 이해하기 위해서는 저 둘에 대한 이해를 하시는 것이 중요합니다. 먼저 6번째 줄과 7번째 줄을 보면 "str" 이런 식으로 뭔가 되어 있는 것을 볼 수 있는데요. 상수인가요? 문자열 상수는 우리는 흔히 리터럴이라고 부릅니다. 디버그 포인트를 찍어 보겠습니다. 그러면 original에 "str"이라는 리터럴이 넘어오게 됩니다. arg0을 보..
인코딩에 대한 이야기 3편. 오늘은 EUC-KR과 CP949에 대해서 잠깐 이야기 해 보도록 하겠습니다. EUC는 아시아계 문자를 표현하기 위해서 개발을 한 코드 체계인데요. 뒤에 KR이 붙었으니까, 한국에서 쓰는 것입니다. 이것은 어떤 특징을 가질까요? 그 전에 KS X 1001이라는 체계가 있어요. 이것은 한국 산업 규격으로 지정된, 한국어 문자 집합 체계입니다. 0x30부터 0x48까지, 그러니까 제가 초록색으로 칠한 부분에 '가', '조', '힝'과 같은 완성형 한글 글자 마디가 속해 있어요. 그런데, 그렇게 문자가 많아보이지는 않습니다. 실제로 자주 쓰이는 2350자만, 가나다, 그러니까 사전 순으로 배열했는데요. 한글 문자 갯수가 11176개이니까, 나머지 8000여개는 없는 셈이 됩니다. E..
자바에는 두 가지 타입이 있습니다. 기본 타입은 byte, char, short, int, long, float, double, boolean이 있어요. 참조 타입은 객체를 가리키는 변수인데요. 이들이 어떻게 다른지 예제 프로그램과 그림으로 설명해 보도록 하겠습니다. 문제의 예제 프로그램입니다. 7번째 줄까지 수행이 되면, 메모리에 다음과 같이 올라갑니다. n과 m은 기본형으로 선언된, 변수들입니다. 즉, 실제 값을 저장하고 있습니다. 8번째 줄에 2차원 배열인 arr을 선언했는데요. 이는 기본형이 아닙니다. 즉 참조형이라는 이야기인데요. 이것은 실값을 저장하지 않습니다. 참조값을 저장해 놓습니다. 그러면 arr은 실값을 저장해 놓았나요? 아닙니다. 객체를 참조하는 어떠한 값을 저장해 놓습니다. 이것이 ..
String에는 getBytes 메서드가 있습니다. 이것이 대체 무엇을 하는 함수일까요? 간단하게 말해서, 어떠한 문자열을 aaa 라는 형식으로 인코딩 해서, 그 결과를 byte 배열로 리턴하는 함수입니다. 그런데, getBytes에 아무런 인자도 넣지 않고 호출하는 경우가 있는데요. 이 경우에 어떻게 동작하는지 간단하게 먼저 봅시다. 상세한 부분은 레퍼런스 분석에서 이야기 하도록 하겠습니다. F5로 호출되는 함수들을 간단하게 봅시다. 먼저, 이 함수 안에 들어가면 StringCoding 클래스의 encode 메소드를 호출합니다. 그러면, 우리는 이런 합리적인 의심이 가능합니다. 이거 encode 하는 함수 아니야? 네. 맞습니다. xxx 라는 형식으로 인코딩 하라는 이야기입니다. 이 함수 내부로 들어가..
최근댓글