자바 기초 다지기 4

Jiyeong·2022년 12월 7일
0

JAVA

목록 보기
27/31

Object 클래스

  1. 모든 클래스는 Object를 상속받음
  2. 모든 클래스의 최상위 클래스
  3. 모든 클래스는 Object의 함수를 재정의 할 수 있음
  4. final로 선언된 함수는 재정의 할 수 없음.

객체에 대해서 String 값으로 나타낼 때 생성되어야 하는 내용이 재정의된다.
toString() = Object의 메서드

s1과 s2의 address가 같음!
equals() : 두 개의 reference 값이 같은 경우 true를 return함
별개의 인스턴스 같다고 정의할 수도 있음.

hashCode() = equals()로 같다고 할 때 항상 반환되는 address

다른 두 객체를 equals()와 hashCode()로 재정의해 같은 객체로 취급

String 클래스

  • 한 번 생성된 String 값(문자값)은 불변(Immutable) -> 연결 및 변경 시 overhead가 커진다(overhead 방지를 위해 스트링 빌더나 스트링 버퍼 사용!)
  • 두 개의 문자열을 합치면 새로운 인스턴스 생성
  • 문자열 연결을 계속하면 메모리에 garbage가 많이 생성될 수 있음

StringBuilder, StringBuffer 클래스 사용

  • 가변적인 char[] 배열을 내부적으로 가지고 있는 클래스
  • StringBuffer : 멀티 쓰레드 프로그래밍에서 동기화
    (Synchronization) 제공
  • StringBuilder : 멀티 쓰레드 프로그래밍 활용을 안 할 시 권장
  • toString()로 String 반환

공통점

  • 내부에 가변적인 Buffer를 가짐
  • Final로 선언되지 않음

제네릭 프레임워크

변수의 선언이나 메서드의 매개변수를 여러 자료형으로 변환될 수 있도록 함

  • 여러 참조형으로 대체될 수 있는 부분을 하나의 문자로 표현
  • 이 문자를 자료형 매개변수라고 함

컬렉션 프레임워크

  • 프로그램 구현에 필요한 자료구조(Data Structure)를 구현해놓은 라이브러리

  • java.util 패키지에 구현되어 있음

  • 개발 소요 시간 절약 및 최적화된 알고리즘 사용 가능

  • 여러 인터페이스와 구현 클래스 사용 방법을 이해하려 함

  • HashSet에 add할 땐 equals()와 hashCode() 둘다 비교

  • HashSet을 쓸 땐 equals()와 hashCode() 재정의

  • Tree가 들어간 클래스 특징 -> "정렬"

내부 클래스

  • 클래스 안 클래스
  • 외부클래스에만 쓰는 클래스를 내부에 선언
  • 여러 변수를 모아 객체 형식을 클래스로 디파인한 것

  • 외부 클래스의 생성자에서 주로 생성되는 내부 클래스

  • 인스턴스 내부 클래스는 주로 외부 클래스가 생성될 때 함께 생성됨

  • 내부클래스의 외부 클래스의 레퍼런스를 가짐

  • 내부클래스는 외부 클래스의 모든 변수 사용 가능

  • 외부에서도 생성은 가능 (new로 생성자)

  • static 클래스는 외부 클래스의 인스턴스 변수를 가져다 사용 불가

  • 익명 내부 클래스는 하나의 인터페이스나 abstract 클래스 생성시 사용

  • 지역 메서드 안에 선언된 변수는 모두 상수가 됨

profile
깃스타가 되고 싶은 벨플루언서

0개의 댓글