jnk1m
Foliage IT
jnk1m
전체 방문자
오늘
어제
  • 분류 전체보기 (209)
    • Today I Learned (34)
    • Java (47)
    • Database (15)
    • [NHN Academy] (27)
    • Spring (47)
    • HTML + CSS + JavaScript (11)
    • JSP (3)
    • Node.js (10)
    • React Native (2)
    • 기타 (8)
    • 스크랩 (5)

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
글쓰기 / 관리자
jnk1m

Foliage IT

JAVA 자바 웹 개발 Day 11(Note): 패키지, API
Java

JAVA 자바 웹 개발 Day 11(Note): 패키지, API

2022. 2. 21. 22:44

 

2022/2/21

 

패키지 package

: 폴더/ 디렉터리. 서로 관련 있는 클래스나 컴파일된 클래스 파일들을 한 곳에 묶어 놓은 것. JDK는 개발자에게 많은 클래스 파일들을 패키지 형태로 제공한다. rt.jar 압축파일로 제공되며, 내부는 폴더 구조로 정리되어 있는 것이 보인다.

 

1.  클래스 명
: 원칙적으로는 클래스를 지칭할 때 패키지 명을 포함하는 경로 명을 사용한다. 패키지와 패키지 사이는 점 연산자 사용.
ex) java.awt.Color

2.  패키지 필요성: 패키지 단위로 묶어 접근 지정자를 설정해줄 수 있다……

3.  패키지 사용
: 기본적으로 클래스 사용 시, 패키지 명을 포함한 전체 경로명을 기술해야 함.
java.util.Scanner sc = new java.util.Scanner();

4.  import문
: import패키지 쓴 다음에 클래스 명;
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
한 패키지 안에 있는 여러 클래스를 사용하고 싶은 경우:
import java.uil.*; //util 패키지에 있는 모든 클래스 임포트
* 곱하기라는 의미도 있지만 이런 경우에 사용할 때는 전체, 모든 이라는 의미.

5.  package 만들기
폴더 만들고 java파일 상단에 package 패키지 명; 적어주기……

 

API (Application Programming Interface)

(패키지 명은 같은데 종류는 다를 수 있음. API 쓸 때는 패키지 이름을 잘 보고 써야 한다.)
자바에서 제공하는 기본 패키지를 JAVA API라고 한다. (표준 패키지)

 

1.  API 문서
# JAVA SE (스탠더드)
#JAVA EE(웹에 관련된 건 EE에 많이 있다.)

 

2.  API
java.awt: GUI. (잘 안 씀……)
java.beans: == 컴포넌트 클래스 (부품 클래스). 메인 메서드 없는 애들……
java.io: Input/ Output (I/O). 입출력 관련. File 자바에서 파일 관련 것들을 관장하는 파일 클래스.
java.lang: 기본 패키지
java.math: 기본 연산 이외에 더 다양한 연산이 필요할 때 사용하는 패키지
java.net: 네트워크 관련
java.nio: 입출력 관련. new I/O
java.security: 보안 관련
java.sql: 데이터 베이스. DB에 연결시키거나 그런 것..
java.text: 글자 관련
java.util: 배열 대신 사용할 것. 날짜, 벡터, 스캐너, 해시 맵, 데이터 저장 등.

그 외
구글 API, 네이버 API, 카카오 API, 공공데이터 포털

 

3.  java.lang
: 기본 패키지. import 필요 없음. 자바 클래스에 필요한 기본적인 클래스들. 

①   Object 클래스: 최상위 클래스. 자바에 있는 모든 클래스는 전부다 오브젝트 클래스를 상속받는다.

리턴 타입은 맨 앞을 보면 알 수 있다. 여기선 class
매개변수가 있으면 API 이름 뒤에 괄호 안에 뜸. 여기선 없음.


getclass() 현 객체의 클래스가 뭔지 클래스를 리턴해줌.
hashCode() 실제 메모리 상에 저장되어 있는 주소 값을 10진수로 리턴해준다.
toString() 어떤 식으로 이 객체를 표현하고 싶은지 정의해놓은 것. 객체를 출력했을 때 나오는 값을 바꾸고 싶으면 투 스트링 오버 라이딩.

 equals() 주소를 기준으로 값이 같은지 비교. ==도 되는데 왜 equals를 쓰냐.. == 연산자는 기본형이라면 값 비교, 참조형이라면 주소를 비교하기 때문에 변수가 뭘 들고 있는지에 따라 결과가 다르다.
* boolean equals(Object obj): 기본적으로 주소 비교로 되어 있지만 메서드이기 때문에 내용물을 바꿔줄 수 있어서 사용자에 의해 오버 라이딩해서 사용 가능.
ex) String 클래스의 equals()

 

②   String 클래스: 문자열 클래스
스트링 리터럴은 자바 컴파일러에 의해 모두 String 객체로 처리

 

 i.      생성자
String()
String(String original): 문자열 넣으면서 객체 생성
String(char [] value): char 배열의 문자들은 String 객체로 생성
String(StringBuffer buffer): 스트링 버퍼 문자열을 String 객체로 생성

 

ii.      스트링 리터럴과 new String()의 차이
리터럴
String str = “hello”;

쌍 따옴표로 묶어서 넣은 게 리터럴. 새로운 문자열로 수정되면 주소에 있는 문구가 수정되는 거 x. 원래 문구는 놔두고 새로운 문구를 테이블에 등록하고 그 주소를 공유한다.
String str = new String(); 객체 생성 방식

객체 생성 방식

 iii.  스트링은 수정 불가능

 

③   주요 메서드
char charAt(int index)
String concat(String str): 현재 스트링 뒤에 str 매개변수를 덧붙여 새로운 문자열로 리턴해줌. (문자열을 이어준다.)
Boolean contains(CharSequence s): 매개변수로 문자열 넣어주면 됨. 매개변수로 던진 값을 포함하는지 체크.
Boolean equals(String str)
int compareTo(String str): 사전 순 비교, 같으면 0, 비교하고 있는 값이 먼저 나오면 음수, 매개변수가 먼저 나오면 양수가 출력됨.
int length()
String replace(CharSequence target, CharSequence replacement) target이 올드, replacement가 뉴. 값을 바꿔치기해준다. 리턴해주기 때문에 리플레이스 한 거는 변수에 따로 저장을 해줘야 한다! 새로 바뀐 문자열 리턴 (변수에 대입해야 바뀐 버전 보존)
String [] split (String regex): 정규식 regular expression을 구분자로 문자열로 나눠서 배열에 담아 리턴. 문자열을 잘라서 담기..
String substring(int beginIndx): beginIndx부터 시작하여 이어지는 문자열을 리턴해준다.
String toLowerCase() 전체 소문자로 바꾸기
String toUpperCase() 전체 대문자로 바꾸기. 둘 다 새로 담아줘야 함
String trim() 앞뒤 공백을 없애줌

 

④   StringBuffer 클래스
: 문자열(String)과는 다르게 문자열을 저장하는 가변 버퍼를 가지고 있다. 저장된 문자열 수정 가능. 문자열이 많을 때는 스트링 버퍼를 쓰는 게 속도 면에서 낫다. 작성하기엔 스트링이 쉽고 편하다.

 

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

예) 스트링을 인트로 바꿀 때, Integer.parseInt <- 이런 게 바로 Wrapper 클래스.
어떤 클래스는 기본형을 아예 안 받는 클래스가 있다.. 그러한 클래스들은 인트를 쓸 때 인티저로 줘야 함.


기본 타입: byte short  int long char float double boolean
Wrapper:  Byte Short Integer Long Character Float Double Boolean (전부 클래스임)

 

i.      객체 생성
클래스 명 변수 명 =new 클래스 명(값); //값은 int or String(숫자로 변환할 수 있는 문자로 줘야 함)

ii.      주요 메서드
float floatValue()
int intValue()
long longValue()
short shortValue() //여기까지 잘 안 씀. 이 밑에 parse를 많이 쓴다.
static int   parseInt(String s)
static String toBinary(int i): 2진수로 바꾸기
static String toHexString(int i): 16진수로 바꾸기
static String toOcatalString(int i): 8진수로 바꾸기
static String toString(int i): 문자열로 바꾸기

 iii.      박싱 / 언박싱
박싱: Integer ten = new Integer(10);
int ----------> Integer
10 <---------- 10
언박싱: int n = ten.intValue();

⑥   Math 클래스

4.  java.util

①   Calendar 클래스
: 추상 클래스/ 년, 월, 일, 요일, 시간, 분, 초, 밀리초 등 get(), set() 메서드 이용. 1970. 1.1.0.0.0 기준.
YEAR
DAY_OF_MONTH
MONTH: 달(0월부터 11월까지. +1 해서 써야 함)
DAY_OF_WEEK: 한 주의 요일
HOUR, AM_PM, HOUR_OF_DAY(24시간 기준), HOUR, MINUTE, SECOND, MILLISECOND: 1초 == 1000밀리 초
* 객체 생성 안됨.
Calendar now = Calendar.getInstance();

②   Date 클래스
: 단일 클래스, 객체 생성 가능
각 값에 대한 get / set 메서드로 바로 사용 가능

 

    'Java' 카테고리의 다른 글
    • JAVA 자바 웹 개발 Day12 (Note): 컬렉션 (ArrayList, Vector, Iterator, HashMap)
    • JAVA 자바 웹 개발 Day 11 (Code)
    • JAVA 웹 개발 Day10 (Code2): 예외 처리
    • JAVA 웹 개발 Day10 (Code1) 싱글턴, 내부 클래스, 익명 클래스

    티스토리툴바