🏫 Open API_JAVA

[41일차] 자동 리소스 닫기 / 사용자 정의 예외와 예외 발생 / java.lang과 java.util 패키지 / Object 클래스 / Tomcat 설치

Dorothy_YANG 2022. 9. 21. 20:47
728x90

20220920(화)

  • 목차
    - 자동 리소스 닫기
    - 사용자 정의 예외와 예외 발생
    - java.lang과 java.util 패키지
    - Object 클래스
    - Tomcat 설치

< 자동 리소스 닫기 >

  • close 역할 : 자원을 쓰고 반납한다
  • throw new Exception(); ➡ 예외를 발생시키는 구문
  • JDK 제공하는 클래스들 중에는 java.lang.AutoCloseable 인터페이스를 구현한 클래스들 제공
    자원을 관리하는 이 클래스들을 이용하여 객체생성 하게되면, close() 메소드를 명시적으로 호출
  • try-with-resources 문법을 사용하면, 자동으로 내부에서 close() 호출

 


< 사용자 정의 예외와 예외 발생 >

  • 사용자 정의 예외 클래스 선언
    자바 표준 API에서 제공하지 않는 예외

  • 애플리케이션 서비스와 관련된 예외
    ex) 잔고 부족 예외, 계좌 이체 실패 예외, 회원 가입 실패 예외….

< java.lang과 java.util 패키지 >

  • 자바 프로그램의 기본적인 클래스를 담은 패키지
  • 포함된 클래스와 인터페이스는 import 없이 사용


< Object 클래스 > : 개념을 이해하기

  • 자바의 최상위 부모 클래스 
    - 모든 클래스들은 Object 클래스를 자동으로 상속받는다.(아래 사진 참고)

       (코드 상에는 나타나지 않지만 클래스 생성시 나타난다.)
    - Object의 메소드는 모든 클래스에서 사용 가능

 


  • Object 클래스의 메소드
메소드 의미
객체 비교 (equals()) - public boolean equals (Object obj) { }
- 기본적으로 == 연산자와 동일한 결과 리턴 (번지 비교)
객체 해시코드 (hashCode()) - 객체 식별할 하나의 정수값
- 객체의 메모리 번지 이용해 해시코드 만들어 리턴
- 개별 객체는 해시코드가  모두 다름

- HashMap 클래스
 : 생성된 기억장소 [key, value] 쌍으로 설계
 : key는 중복할 수 없는 성격
위 두 메소드를 재정의 안하면, 객체비교는 Object클래스의 설계 원리대로 객체비교 작업이 일어남.
재정의 하면, 내가 원하는 대로 비교를 해서, 객체 비교작업이 일어난다.

➡ 비교기준을 클래스 설계자(개발자) 정의
객체 문자 정보 (toString()) 객체를 문자열로 표현한 값
Object 클래스의toString() 메소드는 객체의 문자 정보 리턴
객체 복제 (clone()) * Cloneable 인터페이스를 구현한 클래스 이어야 함

- 얕은 복제(thin clone) : 필드 값만 복제 / 값 변경 하더라도 원본 객체는 영향 X
   (참조 타입은 객체의 번지 복사, 기본 타입은 값 복사)

- 깊은 복제(deep clone) : 참조하고 있는 객체도 복제 / 복제 대상 : 참조타입
- 객체를 새로 생성하는 것보다 객체 복제를 하는 것이 더 성능이 우수하다. 

객체를 새로 생성
A a1 = new A ();
A a2 = new A ();
vs
객체 복제 : 성능이 우수
A a1 = new A ();
A a2 = a1.clone();

 


< Objects 클래스 > - 정적 메소드들로 구성

클래스 의미
객체 비교
(compare(T a, T b, Comparator<T>c))
a, b 두 객체를 비교자(c)로 비교해 int값 리턴

Comparator<T> 인터페이스 (제너릭 인터페이스 타입)
T 타입의 객체를 비교하는 compare(T a, T b) 메소드 가짐
동등 비교
(equals()와 deepEquals())
두 객체의 동등 비교
Objects.equals(Object a, Object b)
deepEquals(Object a, Object b)
비교할 객체가 배열일 경우 항목 값까지도 비교
해시코드 생성
(hash(), hashCode())
Objects.hash(Object… values)
매개값으로 주어진 값들 이용해 해시 코드 생성하는 역할
Arrays.hashCode(Object[]) 호출해 해시코드 얻어 리턴
클래스의 hashCode()의 리턴값 생성할 때 유용하게 사용

Objects.hashCode(Object o)
o.hashCode() 호출하고 받은 값 리턴
매개값이 null 이면 0 리턴
널 여부 조사
(isNull(), nonNull(), requireNonNull())
Objects.isNull(Object obj)
obj가 null일 경우 true

Objects.nonNull(Object obj)
obj가 not null일 경우 true
객체 문자 정보
(toString())
객체의 문자정보 리턴
첫 번째 매개값이 not null - toString ( )으로 얻은 값을 리턴
null이면 “null” 또는 두 번째 매개값인 nullDefault 리턴

 


< Tomcat 설치 및 실행 >

https://bit.ly/3BycvKX

 

[Tomcat 설치] 톰캣 설치 및 서버 구동하기

Tomcat 설정하기 WAS(Web Application Server)로서 동적 웹 컨테이너 1. Tomcat 다운로드 Tomcat 사이트에서 원하는 Tomcat 버전 다운로드 https://tomcat.apache.org/download-90.cgi Apache Tomcat® - Apache T..

dorothy-yang.tistory.com

 

728x90