반응형 SMALL JAVA16 [JAVA] String vs StringBuilder 흔히 String 대신 StringBuilder를 사용하는 것이 더 좋다고 말한다. 그 이유는 무엇일까? 먼저 String str1 = "A"; 식을 보자. 이렇게 하면 힙영역에는 "A" 라는 객체가 생성되고, str1은 스택 영역에 생성된 후 "A" 라는 객체를 참조하고 있다. 여기에서 만약 "B" 라는 문자열을 더해본다면? str1 = str1 + "B"; 단순히 상상하기로는 힙 영역에 "AB" 가 새로 생성될 것 같지만 그렇지 않다. 새로 "B" 라는 객체가 생성되고 이 두개를 합친 "AB"가 생기게 된다. 그리고 str1은 "AB" 객체를 가리킨다. 그러면 힙 영역에는 이제 아무도 참조하지 않는 "A"와 "B" 객체가 남아있고 가비지 컬렉션에 의해 사라질 때까지 기다려야한다. 만약 이러한 연산이 .. 2023. 7. 5. [JAVA] 템플릿 메서드 // Car.java public abstract class Car { public abstract void drive(); public abstract void stop(); public abstract void wiper(); public void washCar() {} public void startCar() { System.out.println("시동을 켭니다."); } public void turnOff() { System.out.println("시동을 끕니다."); } // 이 시나리오는 변하지 않는다 => final 키워드 추가 // 다른 곳에서 더이상 변경 불가능하다. (다른 곳에서 재정의 불가) public final void run() { startCar(); drive(); wiper.. 2022. 3. 31. [JAVA] 다운캐스팅 class Animal { public void move() { System.out.println("동물이 움직입니다."); } } class Human extends Animal { public void move() { System.out.println("사람이 두발로 걷습니다."); } public void readBook() { System.out.println("사람이 책을 읽습니다."); } } class Tiger extends Animal { public void move() { System.out.println("호랑이가 네발로 뜁니다."); } public void hunting() { System.out.println("호랑이가 사냥을 합니다."); } } class Eagle exte.. 2022. 3. 27. [JAVA] 다형성 (Polymorphism) - 하나의 코드가 여러가지 자료형으로 구현되어 실행되는 것 - 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나 - 객체지향 프로그래밍의 유연성, 재활용성, 유지보수성에 기본이 되는 특징 class Animal { public void move() { System.out.println("동물이 움직입니다."); } } class Human extends Animal { public void move() { System.out.println("사람이 두발로 걷습니다."); } } class Tiger extends Animal { public void move() { System.out.println("호랑이가 네발로 뜁니다."); } } class Eagle extends Animal.. 2022. 3. 24. 이전 1 2 3 4 다음 반응형 LIST