패키지 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
☑ 공공데이터 포털
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();
다이렉트로 호환이 되는것
'basic > java 이론' 카테고리의 다른 글
day 18 - [java api] Iterator 반복자, HashMap class, LinkedList class, Stack class, Set<E> interface, properties class (0) | 2021.05.18 |
---|---|
day17 - 제네릭 기법, [java API] Math, Calendar, Date, Collection Class / ArrayList<E>, Vector<E> Class (0) | 2021.05.17 |
자바 문법 배운것 총정리 (0) | 2021.05.13 |
day 15 - 싱글톤 Singleton, 내부 클래스, 예외처리 Exception handling (0) | 2021.05.12 |
day 14 - 추상클래스, 인터페이스 (0) | 2021.05.11 |