-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
해결됨
Long에서 더하기
24.05.23 15:20 작성 조회수 124
0
해당 코드에서 Long은 final변수로 알고 있는데 for문 안에서 더하기가 어떻게 가능한가요?
답변을 작성해보세요.
1
![생각하는자님의 프로필](https://cdn.inflearn.com/public/main/profile/default_profile.png?w=48)
생각하는자
2024.05.23
불변 객체의 값 변경 하는 방법을 생각해 보시면 됩니다.
pdf2 페이지에 있는 "불변 객체-값 변경" 에서
ImmutableObj
예제를 보시면, int형이 final인데도 값을 바꿀 수 있는 방법을 보실수 있습니다.
이것처럼 ImmutableObj
의 예제를 int
를 long
으로 바꾸셔서 코드를 쳐보시고, 생각해 보시면 어느 정도 이해가 가능할 것 같네요 .
1
y2gcoder
2024.05.23
안녕하세요. 썩은도토리님, 공식 서포터즈 y2gcoder입니다.
강의자료를 봤을 때도 final 키워드가 붙어있지 않습니다!
혹시 어째서 그렇게 생각하셨는지 여쭤봐도 되겠습니까!?
감사합니다.
y2gcoder
2024.05.23
이해했습니다!
Long 타입 객체는 불변 객체가 맞습니다. Wrapper 클래스들은 연산할 때
오토 언박싱
연산 수행
새로운 객체 생성 및 오토 박싱
변수에 새로운 객체를 할당
하는 방식으로 진행됩니다.
Long sumWrapper = 0L;
startTime = System.currentTimeMillis();
for (int i = 0; i < iterations; i++) {
// 오토 언박싱: sumWrapper.longValue()
long temp = sumWrapper + i; // sumWrapper.longValue() + i
// 오토 박싱: Long.valueOf(temp)
sumWrapper = temp; // 새로운 Long 객체 생성 및 할당
}
endTime = System.currentTimeMillis();
System.out.println("sumWrapper = " + sumWrapper);
대략적으로 이러한 방식으로 진행된다고 이해해주시면 감사하겠습니다.
더불어서 3. String 클래스 > String 클래스 - 불변 객체 도 복습해보시면 더 이해가 쉬우실 것 같습니다!
그래서
답변 2