면접 준비 용 자바 개념 정리 6

2018-09-24

1. StringBuffer, StringBuilder

  • 문자열을 결합하는 + 연산자를 많이 사용하면 할수록 그만큼 String 객체의 수가 늘어나기 때문에, 프로그램 성능을 느리게 하는 요인이 된다.
  • 문자열을 변경하는 작업이 많은 경우에는 String 클래스를 사용하는 것보다는 StringBuffer 또는 StringBuilder 클래스를 사용한느 것이 좋다.
  • 이 두 클래스는 내부 버퍼(buffer: 데이터를 임시로 저장하는 메모리)에 문자열을 저장해 두고, 그 안에서 추가, 수정, 삭제 작업을 할 수 있도록 설계 되어 있다.
  • 단 StringBuffer는 멀티 스레드 환경에서 사용할 수 있도록 동기화가 적용되어 있어 스레드에 안전하지만, StringBuilder는 단일 스레드 환경에서만 사용하도록 설계되어 있다.
Read More

면접 준비 용 자바 개념 정리 5

2018-09-23

1. 객체 비교(equals())

  • Object의 equals() 메소드이다. Object 클래스의 equals()는 동등 비교인 == 연산자와 동일한 결과를 리턴한다. 두 객체가 동일한 객체이면 true, 그렇지 않으면 false를 리턴한다.
  • 하지만 String 객체는 equals() 메소드를 오버라이딩하여 번지 비교가 아닌 문자열 비교로 변경했다. 즉 String 객체의 equals()는 String 객체의 번지를 비교하는 것이 아니고, 문자열이 동일한지 조사해서 같다면 true를 리턴하고, 그렇지 않다면 false를 리턴한다.
  • Object의 equals() 메소드는 직접 사용되지 않고 하위 클래스에서 재정의하여 논리적으로 동등 비교할 때 이용한다. 예를 들어 Member 객체는 다르지만 id 필드값이 같으면 논리적으로 동등한 객체로 취급하고 싶을 경우, Object의 equals() 메소드를 재정의한다.
  • equals() 메소드를 재정의할 때에는 매개값(비교객체)이 기존 객체와 동일한 타입의 객체인지 먼저 확인해야 한다.
Read More

면접 준비 용 자바 개념 정리 4

2018-09-23

1. try-with-resources

  • 자바 7에서 추가된 try-with-resources를 사용하면 예외 발생 여부와 상관없이 사용했던 리소스 객체(각종 입출력 스트림, 서버 소켓, 각종 채널)의 close() 메소드를 호출해서 안전하게 리소스를 닫아준다.
Read More