자바 3

[Operating System] '동기화 되어있다'는 게 뭐예요?

Intro자바 수업을 들으면서 '어떤 클래스가 동기화 되어있다.' 라는 말을 자주 들었다. 이에 깊게 생각하지 않고 공부를 하던 중 다음 문제 때문에 StringBuilder를 보다가 동기화가 나와서 '동기화 되어있다' 의 정확한 의미를 알고자 글을 작성하게 되었다. 궁금해진 이유StringBuilder의 동기화 되어있다는게 뭘까?HashSet 클래스에 toString() 메서드가 오버라이딩 되어있지 않다. 그럼 어디에 toString()이 오버라이딩 되어있기에 저장된 값이 '[ 1, 3, 2 ] 처럼 대괄호로 값을 출력할까'에 대한 궁금증으로 조상 클래스를 타고 가보니 AbstractCollection 클래스에서 toString()이 오버라이딩 된 것을 확인했다. 'StringBuilder를 쓴 이..

Operating System 2025.04.17

ArrayList 클래스의 remove() 메서드 파해치기

Intro자바의 정석 기초편의 ArrayList 실습을 진행하다, ArrayList 클래스의 오버로딩된 remove(Object o) 메서드를 직접 까보던 중에 'remove의 Object o 인자로 new Integer(1)을 줬는데, 어떻게 ArrayList에 저장된 new Integer(1) 객체와 주소 비교를 해서 지우는 거지?' 라는 코드를 보고 시작된 것이다. 사실 내용(1)을 비교하는 거라면 이해가 갔을 것이다. 하지만, 실제 ArrayList.java에 존재하는 'public boolean remove(Object o)' 는 Object 클래스의 equals()로 ArrayList에 저장된 Integer 객체와 인자로 받은 Integer 객체의 주소를 비교하고 있다. 문제 [28번 라인]..

Java 2025.04.15

디버깅으로 알아보는 변수 초기화 실행흐름

왜 디버깅으로 초기화 실행 흐름을 확인하게 되었나? 과제로 자바의 정석 연습 문제를 풀다가 객체를 그림으로 그려보고, '상속 관계인 두 클래스에 중복된 멤버가 있을 때 어느 클래스 타입 참조변수로 접근하느냐에 따라 값이 달라질 수 있다'를 이해는 하고 있었느나, 문제를 풀어보니 생각한 답과 코드 실행결과가 달랐다. 초기화 순서는 제대로 이해한 상태이다.  내가 생각한 답은 1000, 실행결과는 200 이다.   문제[ 연습문제 7장 7번 ] 다음 코드의 실행했을 때 호출되는 생성자의 순서와 실행결과를 적으시오.package CH07_OOP2.Excercise;class Parent { int x = 100; Parent() { this(200); } Parent(int ..

Java 2025.04.11