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)를 사용해 연결할 수 있다.
- 문자열 값을 수정하면 새로운 문자열을 생성한다.
'Coding 공부 > Java' 카테고리의 다른 글
[Java_Summary] 스레드와 멀티테스킹, 프로세스, Thread, Runnable, 다형성, 동기화(Synchronized) (0) | 2024.03.05 |
---|---|
[Java_Summary] Iterator<E> 인터페이스, 컬렉션 접근방식, Board#3 (0) | 2024.02.29 |
[Java_Exam] Board#2 (0) | 2024.02.29 |
[Java_Example] Board Exam (6) | 2024.02.28 |
[Java_Summary] Set, HashSet, TreeSet, ArrayList, LinkedList, HashMap, HashTable, HashCode, Set.of() (2) | 2024.02.27 |
댓글