🌏 들어가며
그저께 해낸 일들이 너무 사소해서 블로그에 적기가 머쓱했다.
그래도 내가 한 노력을 스스로 평가절하 하지 말자. 가능한 한 꾸준히 포스팅하려고 한다.
요즘 나는 Java 기초를 다시 공부하려는 목적으로, 처음 자바를 공부할 때 썼던 책인 'Do it! 자바 프로그래밍 입문' 이라는 책을 다시 꼼꼼히 읽고 있다. 정부지원 교육과정 마친 이후로는 처음 펴본다.
배울 때 적어뒀던 필기 내용들을 보니 그 때 기억들이 떠오른다. ㅎ
아, 이 수업 이해하기 어려웠지 / 졸았는지 필기가 없네 / 여긴 안 배우고 넘어갔었구나
근데 신기한 건, 그 때는 도오저히 머리에 안 들어가던 것들이 지금 보니 다 이해가 된다는 거다. 쓰는 이유도 모르고 (또는 잊어버리고) 가져다 쓰던 코드들의 의미를 이제야 유레카...! 하는 재미가 있다. 교육센터에서 교재도 잘 골랐었다는 걸 알겠다. 쉽게 쓰였고 지금 읽어도 유용한 책이다.
블로그에는 '헉 정말 유용한 사실이다' 라고 생각한 부분만 정리하려고 한다.
🎫 리터럴(Literal)
프로그램에서 사용하는 모든 숫자, 문자, 논리값(True/False)이다. 'A', 'abc', 10, 3.14 등과 같은 숫자나 문자 등을 '리터럴' 또는 '리터럴 상수'라고 한다. 리터럴은 프로그램이 시작할 때 시스템에 같이 로딩되어 특정 메모리 공간인 상수 풀(constant pool)에 놓인다.
즉 프로그램이 시작할 때 리터럴이 상수 풀에 로딩되는 것이다.
int num = 3;
이렇게 변수에 숫자를 대입해보자.
숫자 3은 리터럴이고 상수 풀에 쓰여있다.
이 3을 num이라는 변수에 대입하면, 상수 풀에서 3이라는 값이 변수 num의 메모리에 복사되는 것이다.
🎫 String을 선언하는 두 가지 방법
자바에서 문자열을 사용하는 방법인 String. 다른 언어들에서는 문자열을 사용하기 위해 char[] 형태의 배열을 사용하는 경우가 많은데, 자바에서는 더 편한 사용을 위해 String 클래스 내부에서 char[]를 만들어주고 유용한 메서드들을 지원한다.
String strA = new String("aaa"); // 1
String strB = "bbb"; // 2
String 변수를 선언하는 대표적인 방법 두 가지다.
1번은 String 클래스의 생성자를 호출하는 방식이고
2번은 문자열 그대로 변수에 저장하는 방식이다.
1번처럼 변수를 만들면 "aaa" 값을 가진 새로운 인스턴스가 힙 메모리 안에 생성된다.
strA 변수는 그 인스턴스를 가리킨다.
생성자를 호출할 때마다 문자열의 내용과는 상관없이 매번 새로운 인스턴스가 생성된다.
'String strC = new String("aaa");'라는 코드를 쓰면 새로운 인스턴스가 힙 메모리에 또 하나 생성되기 때문에 두 변수는 주소가 다르다.
strA == strC 는 false.
그런데 2번처럼 변수에 생성자를 사용하지 않고 바로 문자열 상수를 대입하면,
strB 변수는 상수 풀에 있는 "bbb"를 가리킨다.
만약 'String strD = "bbb";'라는 코드를 아래에 쓴다면
strB와 strD는 상수 풀에 있는 "bbb"를(같은 주소를) 동시에 가리키게 된다.
strB == strD 는 true.
'주니어에서 시니어로 > 개발일기' 카테고리의 다른 글
[월간회고 / 2023년 1월] 내가 해냄(Done) (2) | 2023.02.06 |
---|---|
[사이드 프로젝트] 웹사이트 배포까지 #2_프로젝트 일정 수정 그리고 고객 대상 시연발표에 대해 (0) | 2023.01.08 |
[사이드 프로젝트] 웹사이트 배포까지 #1_AWS DB 생성해 접속하기 (0) | 2023.01.07 |
[월간회고] 5월 KPT / 이사하고 면접 보고 살아가고 (0) | 2022.06.05 |
[개발일기] 프리랜서 이직 # 2022.04 (0) | 2022.05.19 |
댓글