Coding 공부/Java

[Java_Summary] 패키지(Package), import, 외부 패키지 경로 설정, 모듈, 자바 주요 패키지, Object 클래스, Wrapper 클래스, String 클래스

CBJH 2024. 2. 29.
728x90
반응형

1. 패키지(Package)

 

  • 여러 class파일을 저장하고 있는 디렉터리(폴더)를 패키지라고 한다.
  • 파일의 경로명은 점(.)을 찍어 표현한다.
Project.FileIO.tools.class
  • 서로 관련 있는 클래스나 인터페이스의 컴파일된 클래스 파일들을 한 곳에 묶어 놓은 것이다.
  • 패키지를 모듈(Module)이라는 단위로 묶어 자바JDK에서 기본적으로 제공한다.

 

2. import와 클래스 경로

 

  • import문은 다른 패키지의 클래스를 사용할 때, 그 경로명을 컴파일러에게 알려준다.
import 패키지.클래스;

  • import를 하지 않아도 소스 내에서 패키지 이름과 클래스 이름의 전체 경로명을 써주면 사용할 수 있다.

 

  • 한 패키지 안에 있는 여러 클래스를 import하고자 할 때엔, 아스트레이를 사용해 한번에 선언한다.
import java.util.*;

  • *는 현재 패키지 내의 클래스만을 의미하며 하위 패키지의 클래스까지 포함하지 않는다.

2.1 외부 패키지 경로 설정 및 멤버 사용하기

외부 패키지의 경로와 클래스를 import해주면 해당 클래스 내에 있는 멤버도 사용할 수 있다. 두 클래스 모두 main()메서드가 있어도 컴파일러가 잘 처리해서 지금 실행 중인 main()메서드의 실행결과만 보여준다.(파이썬과 조금 다른 부분, 파이썬에선 if __name__ == "__main__": 처리된 부분만 main()메서드로 인식해서 실행한다.)

 

3. 모듈

 

모듈(module)은 java9에서 처음 도입된 개념으로 패키지들을 담는 컨테이너 역할이다.

모듈은 .jmod파일이다. zip 포맷으로 압축 된 것이다.

기본 모듈 : java.base.jmod

java.base.jmod의 압축을 풀면 여러 디렉토리와 패키지가 나온다. com, java, javax, io, lang, math 등...

 

  • 자바에서 기본으로 제공하는 클래스들을 자바 API라고 한다.
  • jmod 디렉터리에 담겨있다.(java.desktop, java.base, java.rmi, java.sql 모듈을 갖는다.)
  • https://docs.oracle.com/javase/10/docs/api/ 자바 API참조 사이트
  • 개발자는 JDK 클래스가 가진 메소드를 다 기억하거나 이해할 수 없기 때문에 항상 자바 API문서를 열어놓고 작업하는 것이 좋다.

 

3.1 자바 모듈화의 목적

  • 자바 컴포넌트들을 필요에 따라 조립하여 사용하기 위함
  • 컴퓨터 시스템의 불필요한 부담 감소
  • 세밀한 모듈화를 통해 필요 없는 모듈이 로드되지 않게 함
  • 소형 IoT 장치에도 자바 응용프로그램이 실행되고 성능을 유지하게 함

 

3.2 자바 주요 패키지

  java.lang 

  • 자바 language 패키지 
  • 스트링, 수학 함수, 입출력 등 자바 프로그래밍에 필요한 기본적인 클래스 와 인터페이스 
  • 자동으로 import. import 문 필요 없음 

  java.util 

  • 자바 유틸리티 패키지 
  • 날짜, 시간, 벡터, 해시맵 등과 같은 다양한 유틸리티 클래스와 인터페이 스 제공

  java.io

  • 키보드, 모니터, 프린터, 디스크 등에 입출력을 할 수 있는 클래스와 인터페이스 제공

  java.awt

  • 자바 GUI 프로그래밍을 위한 클래스와 인터페이스 제공

  javax.swing

  • 자바 GUI 프로그래밍을 위한 스윙 패키지

 

4. Object 클래스

 

4.1 Object 클래스의 특징

  • java.lang 패키지에 포함됨
  • 모든 클래스의 수퍼 클래스
  • 모든 클래스가 강제로 상속한다.
  • 모든 객체가 공통으로 가지는 객체의 속성을 나타내는 메소드 보유

 

4.2 toString()

  • 객체를 문자열로 변환
  • Object 클래스에 구현된 toString()이 반환하는 문자열
public String toString() { return getClass().getName() +"@" + Integer.toHexString(hashCode()); }
//Object 클래스에 이렇게 구현되어있다.
  • 개발자는 자신만의 toString() 작성이 필요하다.  Object의 toString()를 오버라이딩하여 사용한다.

4.3 toString() 예제

  • 편의성을 위해 class객체를 자동으로 String 자료형으로 변환해 사용되어짐을 알 수 있다.  
  • 객체안에 멤버가 어떤 것들이 있는지 확인하는 용도로 사용하면 좋다.

4.5 equals()

  • == 연산자 

두 개의 레퍼런스 비교

 

  • boolean equals(Object obj)

객체 내용이 같은지 비교

  • Object의 eqauls() 메서드를 오버라이딩하여 객체가 같은지 비교하는 메서드로 사용할 수 있다. 

  • public boolean equals(Object obj){}를 기본형으로 오버라이딩하여 사용한다.
  • 오버라이딩 할 때, 매개변수의 형태는 같아야하므로 Object Type으로 받고, 9줄처럼 업캐스팅하여 멤버값과 비교해  값이 같다면 true를 반환하는데 사용할 수 있다.

 

 

5. Wrapper 클래스

  • 이름이 Wrapper인 클래스는 존재하지 않는다.
  • 용도 : 기본 타입의 값을 객체로 다룰 수 있게 한다.

 

5.1 Wrapper 클래스 객체 생성

 

  • 생성자를 이용한 Wrapper 객체 생성은 Java9부터 하지 않는다. 되긴한다.
  • .valueOf(); 메서드에 매개변수로 값을 넣어 사용한다.

5.2 Integer 클래스의 주요 메소드

  • 보통 Integer.parseInt(String s);, Integer.toString(int i);, Integer.valueOf(int i); 를 자주 쓴다.
  • 문자열을 기본 데이터 타입으로 변환하거나 기본 타입을 문자열로 반환할때 자주 사용한다.

 

6. 박싱과 언박싱

  • 박싱(boxing) :  기본 타입의 값을 Wrapper 객체로 변환 
  • 언박싱(unboxing) : Wrapper 객체에 들어 있는 기본 타입의 값을 빼내는 것

  6.1 자동 박싱과 자동 언박싱 - jdk1.5부터

 

 

 

7. String 클래스

 

  • 자바는 String - java.lang.String를 기본으로 제공한다.
  • String 클래스는 하나의 문자열 표현 방법이다.
  • String 생성자 사용 방법

 

  7.1 스트링 리터럴과 new String()

  • 스트링 생성 방법은 리터럴 또는 new String()으로 객체생성 하는 방법 두가지가 있다.

리터럴로 생성, String s = "Hello";

  • JVM이 리터럴 관리, 응용프로그램 내에서 공유됨

 

String 객체로 생성, String t = new String("Hello");

  • 힙 메모리에 String 객체 생성

 

7.2 스트링 객체의 주요 특징

  • 스트링 객체는 수정 할 수 없다. > 값을 바꾸면 해당 Heap영역에서 수정되는 것이 아니라 새로운 객체를 생성한다.
  • 스트링을 비교할 땐, equals()를 사용한다. 

7.3 스트링 주요 메서드

  • 문자열은 + 연산자로 연결하거나 .concat(String str)를 사용해 연결할 수 있다.
  • 문자열 값을 수정하면 새로운 문자열을 생성한다.

 

 

 

 

댓글