Integer나 Double 클래스가 가끔 코드에 등장한다. 이들은 기본 타입인 int나 double에 대응하는 래핑(wrapping) 클래스 타입이다. 이런 타입을 많이 접하는 것이 ArrayList와 같이 콜렉션 객체를 선언할 때이다. 이 클래스들이 왜 필요할까? 앞의 포스트에서 값 변수와 참조 변수에 대해 살펴보았다. 자바에서 변수는 값 모델(즉 변수가 직접 값을 가지는 형태)과 참조 모델(변수는 객체의 참조를 가짐. 객체는 힙 메모리의 어딘가에 존재한다)로 나눈다. int와 double은 기본타입으로 값모델을 가지는데, 그 경우 int n;이라고 선언하면 n이 나타내는 주소(위치)에 int 값이 저장된다. 이 때 n은 값을 나타내기도 하고 저장소를 나타내기도 한다. 이것을 값모델이라고 한다. 반면..
스트링 클래스를 얘기할 때 흔히 불변성에 대해 언급한 것을 많이 본다. Immutable을 불변성으로 번역하는데, 이것이 무엇을 의미하는지 이해하기가 쉽지는 않다. 간단하게 말해서 스트링 객체는 한번 만들어지면 그 안에 포함된 문자열의 값이 바뀌지 않는다. 생성될 때 정해진 문자열 데이터가 변할 수 없다는 뜻이다. 대표적인 예로 i번째 글자를 가져오는 charAt(i)라는 메소드는 있지만 i번째 글자를 수정할 수 있는 방법은 없다. 스트링에 들어있는 데이터를 일부라도 바꿀 수 있는 방법이 없다는 것이다. 그렇다면 + 연산이나 substring 메소드는 무엇인가? 일부를 바꾸는 replace 메소드는? 이런 메소드들은 스트링의 값을 변경시키는 것이 아니라 원래 객체는 그대로 두고 새로운 객체를 만들어서 돌..
- Total
- Today
- Yesterday
- Iterator
- format
- sort key
- python example
- APPEND
- ToString
- 이터레이터
- python exercise
- max
- rust
- typedef
- 동적바인딩
- indexof
- Lazy evaluation
- TypeError
- 자바regex
- 콜렉션
- C++ 클래스
- follow
- contentEquals
- CompareTo
- 이터러블
- 스트링
- 스트링 +
- zip
- Camel Style
- comparable
- 지연계산
- contains
- 패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |