basic/java 이론

day 16 - 패키지, API

못지(Motji) 2021. 5. 14. 17:16

패키지 Package

= 폴더

• 서로 관련있는 클래스나 컴파일된 클래스 파일들을 한곳에 묶어 놓은것

👀 JDK는 개발자에게 많은 클래스 파일들을 패키지 형태로 제공한다.

이 패키지는 rt.jar 압축파일로 제공되며 압축해제하면 폴더 구조로 소스파일들이 정리되어 들어가있는게 보인다.

jar파일 압축된 형태 그대로 라이브러리에 배치하면 자동으로 쓸 수있다.

▶ Package는 컴퓨터에 자료 폴더별로 분류해서 저장하는것과 같은 개념이다.

클래스 경로명

✔ 클래스를 지칭할때는 패키지명을 포함하는 경로명을 사용한다. 패키지와 클래스 사이 점(.)연산자 사용한다.

✔java.awt.Color

경로명 ▶ C:/...java\java\awt.Color.class

패키지 필요성

✔ 소스 파일을 목적에 맞게 구조적으로 관리하여 유지 보수가 편하게 한다.

✔ 그룹으로 개발시, 각각 개발하는 파트의 클래스 파일을 합쳐 놓게 되면 파일명이 중복되는 현상이 발생되는 경우가 있다.

✔ 소프트웨어의 높은 재사용성과 패키지별 접근제한으로 접근 권한의 범위 지정이 가능하다.

패키지 사용

✔ 기본적으로 클래스 사용시 패키지명을 포함한 전체 경로명을 기술해야 한다.

java.util.Scanner sc = new java.util.Scanner(java.lang.System.in);

✔ 코드가 길어지고 가동성이 떨어지므로 이를 해소하기 위해서  import문을 사용

 

💡 import문

import 패키지.클래스;

import java.util.Scanner;	// 파일 상단에 기술
Scanner sc = new Scanner(System.in)

한 패키지에 있는 여러 클래스를 import하고자하는 경우 * 을 사용하여 선언 가능 ( * : 모든~)

import 패키지.*;

import java.util.*; ▶ util 패키지 안에 있는 모든 클래스를 import 해줌

패키지 만들기

✔ 패키지 선언

◻ pakage 패키지명;

💡 default pakage : packge 선언 사용하지 않을 경우 현재 디렉토리를 인지함

API Application Programming Interface

• 자바에서 제공하는 기본패키지 ▶ 자바 API

• 자바를 설치하면 자바 개발 도구인 JDK가 설치되며 이곳에는 개발자들이 사용할 수 있도록 오라클에서 미리 만들어 놓은 많은 클래스들을 패키지로 제공해준다. 자바에서 제공하는 기본패키지를 자바 API 라고 한다.

자바 API 문서

java SE(Standard Edition)

https://docs.oracle.com/javase/8/docs/api/

java EE (웹)

https://docs.oracle.com/javaee/7/api/toc.htm

 

자바 API ( 자주쓰는 것들)

java.lang : 기본패키지 🔥🔥

java.util : 배열을 대신하는 작업이 이곳에 잇다. 날짜, 자료구조관련, 간단한 입출력 …

java.io : input/output (I/O) : 입출력관련 file

java.sql : 데이터 베이스 관련

java.awt : GUI Graphic User Interface 관련

java.beans : 컴포넌트(부품) 클래스

java.math : 기본연산이외에 더 다양한 연산이 필요할 때

java.nio : new I/O 새로운 입출력장티가 생기면 호환을 하기 위한 패키지

java.security : 보완관련

java.text : 글자 관련, 폰트/색

javjax.~~ : 서포트하는 패키지

 

그외 기업&정부에서 제공하는 API

☑ google API

https://console.cloud.google.com/apis/library?ref=https://www.google.com/&pli=1 

☑ 네이버 API

https://developers.naver.com/docs/common/openapiguide/#/apilist.md

☑ 카카오 API

https://developers.kakao.com/

☑  공공데이터 포털

www.data.go.kr

 

java.lnag

import 필요없음

System을 비롯하여 문자열, 수학함수, 입출력 등 자바 프로그래밍에 필요한 기본적인 클래스와 인터페이스 등을 제공

 

💡 equals() 메소드

두 객체의 주소값 비교

기본형 타입 :  ==

객체 비교 : == 가능함(변수가 들고있는 것이 주소값), equals() 사용을 더 추천 (equals() 오버라이딩 안되었다면 주소비교)

👀

◽ == 연산자 : 값, 레퍼런스 비교

◽ equals() : 두 객체가 같은지 주소 비교

◽ (번외) String의 equals() : 내용물비교, 즉 문자열이 동일한지 비교, Object로 물려받은  equals()메소드를 문자열비교 기능으로 오버라이딩 되어 있다.

 

✔ String  클래스

문자열 클래스

스트링 리터럴("hello)은 자바 컴파일러에 의해 모두 String 객체로 처리

 

☑ 생성자 (api 문서 참고)

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

▫ 스트링리터럴과 new String()으로 생성된 객체는 서로 다르게 관리

▫ 스트링 리터럴 : 자바 내부에서 리터럴테이블로 특별 관리하여 동일한 리터럴 공유함

▫ new String() : new로 생성된 스트링은 다른 객체와 동일하게 힙메모리에 생성

☑ 스트링 객체는 수정 불가능

▫ 리터럴이던 new String()으로 생성했던, 스트링 객체는 수정 불가능

▫ 스트링을 수정하면 새로운 스트링객체를 만들어 주기 때문에

▫ 스트링이 공유되어도 문제가 발생되지 않음

 

🔥 String class 주요 메소드

리턴타입 메소드명 설명
char charAt(int index) index에 있는 문자 값 리턴
int compareTo(String anotherString) 두 스트링을 사전순으로 비교,
같으면 0, 자신이 먼저 나오면 음수, 비교하는 another가 먼저나오면 양수 리턴
String concat(String str) 현재스트링 뒤에 str 스트링을 덧붙힌
새로운 스트링 리턴
boolean contains(CharSequene s)
CharSequene = String의 부모 클래스
s에 지정된 문자들을 포함하고 있으면 true 아니면 false
int length() 문자열 길이
String replace(CharSequence target, CharSequence replacement) target 부분을 replacement로 변경한 스트링 리턴
String[] split(String regex) regex에 일치하는 부분으로 스트링을 분리하고 분리된 스트링을 배열로 저장해 리턴
String subString(int beginIdx) beginIdx부터 시작하여 끝까지 문자열을 잘라서 리턴
String subString(int beginIdx, int endIdx) beginIdx ~ endIdx전까지 잘라서 리턴
String toLowerCase() 소문자로 변경한 문자열 리턴
String toUpperCase() 대문자로 변경한 문자열 리턴
String trim() 스트링 앞뒤 공백 제거한 스트링 리턴
int indexOf(String str) 문자열안에서  str이 위치한 인덱스번호 리텅

✔ StringBuffer 클래스

문자열을 다룸

String과 다르게 StringBuffer 객체는 문자열을 저장하는 가변 버퍼를 가지고 있어

저장된 문자열 수정가능 문자열의 크기가 늘어나면 내부 버퍼 크기를 자동 조절함.

☑ 생성자 api 참고

☑ 주요메소드

리턴타입 메소드명 설명
StringBuffer  append(String str)  
StringBuffer  append(StringBuffer sb)  
int capacity() 스트링버터 크기 리턴
StringBuffer  delete(int start, int end) start~end start~end 전까지 부분 문자열 삭제
StringBuffer  nsert(int offset, String str)  offset 위치에 str 삽입
StringBuffer  replace(int start, int end, String str) start~end전 범위에 있는 문자열을 str로 교체
StringBuffer  reverse() 문자열 반대 순서로 변경
void setLength(int newLength) 나머지 문자열을 공백으로, 더 적게 줄이면 원래 문자열 날라감

✔ Wrapper 클래스

Wrapper라는 클래스는 존재하지 않는다.

int, char, double 등 8개 기본형을 객체로 다루기 위해 JDK에 만들어진 8개의 클래스를 통칭하여  Wrapper 클래스라함

기본형 : byte short int long char float double boolean

wrapper : Byte Short Integer Long Character Float Double Boolean

기본형 byte  short  int  long  char  float  double  boolean
wrapper  Byte  Short  Integer  Long  Character  Float  Double  Boolean

☑ 객체 생성

클래스명 참조변수명 = new 클래스명(값);

☑ 주요메소드 (Integer 기준)

리턴타입 메소드명 설명
float floatValue()  
int intValue()  
long longValue()  
short shortValue()  
static int parseInt(String s) 문자열 s 던저주면 int로 바꿔준다
static int parseInt(String s, int radix) radix 지정한 진법 정수로 변환한 값 리턴
static String toBinaryString(int i) 2dl
static String toH  
static String toOc 8wlstn
static String toString(int t)  

☑ 박싱/언박싱

박싱

Integer ten = new Integer(10);

int ------------------> Integer 객체

10 ------------------>10

[n]------------------>[ten] 

   <------------------

언박싱

int n = ten.intValue();

다이렉트로 호환이 되는것