본문 바로가기

Tech/Java

객체 지향이 생소한 당신을 위해 (feat. 객체지향 생활 체조) 이런 분들을 위해 작성했습니다. 이 글에서는 객체 지향이 무엇인지에 대해 다루지 않습니다! 구글링하면 더 좋은 글들이 많답니다. 대신 이 글은 객체 지향이 뭔지 도대체 감은 안오지만 관심 정도는 있어 기웃거리시는 분들을 위해 작성했습니다. 클린 코드와 리팩토링에 대해 관심있는 분들에게도 좋을 것 같습니다! 객체 지향 생활 체조? 혹시 복싱을 배워보신 적이 있나요? 가보신 분들은 아시겠지만 복싱을 처음 배우러 가면 첫 한 달동안은 거의 줄넘기만 시킵니다. 저도 상대방의 허점을 노리는 스트레이트, 그걸 미리 읽어 카운터를 치는 화려한 모습에 반해 시작했지만 지루한 줄넘기에 무료함을 느끼고 금방 그만둔 경험이 있습니다. 사실 복싱에서 줄넘기는 매우 중요한 운동이라고 합니다. 복서에게 요구되는 박자감과 신체의 ..
객체지향 프로그래밍(Object Oriented Programming) 객체지향 프로그래밍(Object Oriented Programming)이란? 객체지향 프로그래밍, 줄여서 OOP란 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그램에 필요한 데이터를 추상화 시켜 상태와 행위를 가지는 객체를 만들고 그 객체들 간 유기적인 상호과정을 통해 로직을 구성하는 프로그래밍 방법이다. * 객체(Object) : 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른것과 식별 가능한 것. 객체는 속성과 동작으로 구성되어 있다고 보면 되는데 자바에서는 속성은 field, 동작은 method로 구현된다. 객체지향 프로그래밍의 장,단점 장점 1. 재사용성 상속 등을 통해 프로그래밍시 코드의 재사용을 높일 수 있음. 2. 생산성 향상 잘 설계된 클래스를 만들..
[Java] String vs StringBuffer vs StringBuilder Java에서 문자열을 다루기 위해 주로 String, StringBuffer, StringBuilder라는 클래스를 사용하게 된다. 비슷하지만 다른 이 클래스들의 특징과 차이점을 찾아보고 각 클래스들이 어느 상황에 적절하게 사용될 수 있는지 알아보고자 한다. String String 문자열을 다룰 때 가장 일반적으로 사용하는 클래스로 immutable(불변)하다. String 객체를 메모리에 한 번 할당하면 그 공간이 변하지 않다는 뜻이다. String으로 생성된 데이터는 Heap 영역에 할당된다. String str = "ABC"; str += "DEF"위의 예시는 String에 문자열을 추가하는 일반적인 경우로 str는 "ABCDEF"가 된다. 언뜻보면 원래의 문자열에 "DEF"를 추가한 것처럼 보이..
[JAVA] Comparable과 Comparator Comparator와 Comparable은 모두 인터페이스로 객체들을 정렬 또는 이진검색트리를 구성하는데 필요한 메서드를 정의하고 있음. Comparable을 구현하고 있는 클래스들은 같은 타입의 인스턴스끼리 서로 비교할 수 없는 클래스들, 주로 Integer와 같은 wrapper클래스(Boolean제외)와 String, Date, File과 같은 것들이며 기본적으로 오름차순, 즉 작은 값에서부터 큰 값의 순으로 정렬되도록 구현되어 있음. 그래서 Comparable을 구현한 클래스는 정렬이 가능하다는 것을 의미함. 만일 Comparable을 구현하지 않은 클래스의 인스턴스를 TreeSet에 담는 다면 정렬기준이 없기 때문에 당연히 알아서 정렬되지 않을 뿐더러 컴파일 에러는 발생하지 않지만 실행 시 에러가..