1. StringBuffer, StringBuilder
- 문자열을 결합하는 + 연산자를 많이 사용하면 할수록 그만큼 String 객체의 수가 늘어나기 때문에, 프로그램 성능을 느리게 하는 요인이 된다.
- 문자열을 변경하는 작업이 많은 경우에는 String 클래스를 사용하는 것보다는 StringBuffer 또는 StringBuilder 클래스를 사용한느 것이 좋다.
- 이 두 클래스는 내부 버퍼(buffer: 데이터를 임시로 저장하는 메모리)에 문자열을 저장해 두고, 그 안에서 추가, 수정, 삭제 작업을 할 수 있도록 설계 되어 있다.
- 단 StringBuffer는 멀티 스레드 환경에서 사용할 수 있도록 동기화가 적용되어 있어 스레드에 안전하지만, StringBuilder는 단일 스레드 환경에서만 사용하도록 설계되어 있다.
Read More
1. 객체 비교(equals())
- Object의 equals() 메소드이다. Object 클래스의 equals()는 동등 비교인 == 연산자와 동일한 결과를 리턴한다. 두 객체가 동일한 객체이면 true, 그렇지 않으면 false를 리턴한다.
- 하지만 String 객체는 equals() 메소드를 오버라이딩하여 번지 비교가 아닌 문자열 비교로 변경했다. 즉 String 객체의 equals()는 String 객체의 번지를 비교하는 것이 아니고, 문자열이 동일한지 조사해서 같다면 true를 리턴하고, 그렇지 않다면 false를 리턴한다.
- Object의 equals() 메소드는 직접 사용되지 않고 하위 클래스에서 재정의하여 논리적으로 동등 비교할 때 이용한다. 예를 들어 Member 객체는 다르지만 id 필드값이 같으면 논리적으로 동등한 객체로 취급하고 싶을 경우, Object의 equals() 메소드를 재정의한다.
- equals() 메소드를 재정의할 때에는 매개값(비교객체)이 기존 객체와 동일한 타입의 객체인지 먼저 확인해야 한다.
Read More
1. try-with-resources
- 자바 7에서 추가된 try-with-resources를 사용하면 예외 발생 여부와 상관없이 사용했던 리소스 객체(각종 입출력 스트림, 서버 소켓, 각종 채널)의 close() 메소드를 호출해서 안전하게 리소스를 닫아준다.
Read More
1. 추상 클래스
Read More
1. 객체 지향 프로그래밍 특징
- 객체 지향 프로그래밍의 특징으로는 캡슐화, 상속, 다형성을 들 수 있다.
Read More