전공/객체지향프로그래밍

[객체지향프로그래밍][Java] 모듈과 패키지 개념 (Object, Wrapper, Integer, String, StringBuffer, StringTokenizer, Math, Calendar)

Campus Coder 2023. 5. 31. 17:07
728x90
반응형

패키지

서로 관련된 클래스와 인터페이스의 컴파일 된 클래스 파일들을 하나의 디렉터리에 묶어 놓은 것

 

패키지 사용하기

import 사용 x

- 소스 내에서 패키지 이름과 클래스 이름의 전체 경로명을 써주어야 함

java.util.Scanner

 

import 사용

- 소스의 시작 부분에 사용하려는 패키지 명시(클래스만 명시)

import java.util.Scanner; // 특정 클래스의 경로명만 포함
import java.util.*; // 패키지 내의 모든 클래스 포함

 

패키지 만들기

패키지 선언

package 패키지명;

- 컴파일한 클래스 파일을 패키지명의 디렉터리에 저장하라는 명령

- 소스 파일의 첫 줄에 선언

- 클래스의 경로명은 "패키지명.클래스명"

 

디폴트 패키지와 패키지 특징

디폴트 패키지

- package 선언문이 없이 만들어진 클래스의 패키지

- 디폴트 패키지는 현재 디렉터리

패키지의 특징

- 패키지 계층구조

- 패키지별 접근 제한

- 동일한 이름의 클래스와 인터페이스 사용 가능

- 높은 소프트웨어 재사용성

 

모듈

  • 패키지와 이미지 등의 자원을 담은 컨테이너
  • 모듈 파일(.jmod)로 저장

자바 모듈화의 목적

자바 컴포넌트들을 필요에 따라 조립하여 사용하기 위함

컴퓨터 시스템의 불필요한 부담 감소

 

 

자바의 주요 패키지

java.lang

자바 language 패키지

- 스트링, 수학 함수, 입출력 등 자바 프로그래밍에 필요한 기본적인 클래스와 인터페이스

자동으로 import

java.util

자바 유틸리티 패키지

- 날짜, 시간, 벡터, 해시맵 등 다양한 유틸리티 클래스와 인터페이스

java.io

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

java.awt

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

javax.swing

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

 

 

Object 클래스

특징

java.lang 패키지에 포함

모든 클래스의 슈퍼 클래스

- 모든 클래스에 강제 상속

- 모든 객체가 공통으로 가지는 객체의 속성을 나타내는 메소드 보유

 

주요 메소드

메소드 설명
boolean equals(Object obj) obj가 가리키는 객체와 현재 객체를 비교해서 같으면 true 리턴
Class getClass() 현 객체의 런타임 클래스를 리턴
int hashCode() 현 객체에 대한 해시 코드 값 리턴
String toString() 현 객체에 대한 문자열 표현을 리턴
void notify() 현 객체에 대해 대기하고 있는 하나의 스레드 깨움
void notifyAll() 현 객체에 대해 대기하고 있는 모든 스레드 깨움
void wait() 다른 스레드가 깨울 때까지 현재 스레드를 대기

String toString

객체를 문자열로 반환

Object 클래스에 구현된 toString()이 반환하는 문자열

public String toStrong() { 
    return getClass(),getName() + "@" + Integer.toHexString(hashCode());
}

'객체 + 문자열' => '객체.toString() + 문자열' 자동변환

 

equals()

== 연산자: 두 개의 레퍼런스 비교

bollean equals(Object obj): 객체 내용이 같은지 비교

 

 

Wrapper 클래스

자바의 기본 타입을 클래스화한 8개 클래스

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

이름이 Wrapper인 클래스는 존재하지 않음

기본 타입의 값을 객체로 다룰 수 있게 함

 

기본 타입의 값으로 Wrapper 객체 생성

Integer i = Integer.valueOf(10);
Character c = Character.valueOF('c');
Double f = Double.valueOf(3.14);
Boolean b = Boolean.valueOf(true);

 

문자열로 Wrapper 객체 생성

Integer i = Integer.valueOf("10");
Double f = Double.valueOf("3.14");
Boolean b = Boolean.valueOf("false");​

 

Float 객체는 double 타입의 값으로 생성 가능

 

Integer 클래스의 주요 메소드

메소드 설명
static int bitCount(int i) 정수 i의 이진수 표현에서 1의 개수 리턴
float floatValue() float 타입으로 값 리턴
int intValue() int 타입으로 값 리턴
long longValue() long 타입으로 값 리턴
short shortValue() short 타입으로 값 리턴
static int praseInt(String s) s를 10진 정수로 변환한 값 리턴
static String toBinaryString(int i) 정수 i를 이진수 표현으로 변환한 문자열 리턴
static String toHexString(int i) 정수 i를 16진수 표현으로 변환한 문자열 리턴
static String toOctalString(int i) 정수 i를 8진수 표현으로 변환한 문자열 리턴
static String toString(String i) 정수 i를 문자열로 변환하여 리턴
static Integer valueOf(int i) 정수 i를 담은 Integer 객체 리턴
static Integer valueOf(String s) 문자열 s를 정수로 변환하여 담고 있는 Integer 객체 리턴

 

Wrapper 활용

Wrapper 객체로부터 기본 타입 값 알아내기

문자열을 기본 데이터 타입으로 변환

기본 타입을 문자열로 변환

 

박싱과 언박싱

박싱(boxing) - 기본 타입의 값을 Wrapper 객체로 변환

언박싱(unboxing) - Wrapper 객체에 들어 있는 기본 타입의 값을 빼내는 것

JDK1.5부터 자동 박싱/언박싱 처리

 

String

String - java.lang.String

string 클래스는 하나의 문자열 표현

 

String생성자

생성자 설명
String() 빈 스트링 객체 생성
String(char[] value) char 배열에 있는 문자들을 스트링 객체로 생성
String(String original) 매개변수로 주어진 문자열과 동일한 스트링 객체 생성
String(StringBuffer buffer) 매개변수로 주어진 스트링 버퍼의 문자열을 스트링 객체로 생성

 

스트링 리터럴과 new String()

스트링 생성 방법, String s = "Hello";

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

스트링 객체의 특징

스트링 객체는 수정 불가능

String s = new String("Hello");
String t = s.concat("Java"); // 스트링 s에 "java"를 덧붙인 새로운 스트링 객체 리턴​

따라서 스트링 비교 시 반드시 equals() 사용

 

주요 메소드

메소드 설명
char charAt(int index) index 인덱스에 있는 문자 값 리턴
int codePointAt(int index) index 인덱스에 있는 유니코드 값 리턴
int compareTo(String anotherString) 두 스트링을 사전 순으로 비교하여 두 스트링이 같으면 0, 현 스트링이 anotherString보다 먼저 나오면 음수, 아니면 양수 리턴
String concat(String str) 현재 스트링 뒤에 str 스트링을 덧붙인 새로운 스트링 리턴
boolean contains(CharSequence s) s에 지정된 문자들을 포함하고 있으면 true 리턴
int length() 스트링의 길이(문자 개수) 리턴
String replace(Charsequence target, Charsequence replacement) target이 지정하는 일련의 문자들을 replacement가 지정하는 문자들로 변경한 스트링 리턴
String[] split(String regex) 정규식 regex에 일치하는 부분을 중심으로 스트링을 분리하고, 분리된 스트링들을 배열로 저장하여 리턴
String subString(int beginIndex) beginIndex 인덱스부터 시작하는 서브 스트링 리턴
String toLowerCase() 소문자로 변경한 스트링 리턴
String toUpperCase() 대문자로 변경한 스트링 리턴
String trim() 스트링 앞뒤의 공백 문자들을 제거한 스트링 리턴

 

문자열 연결

+ 연산자로 문자열 연결

피연산자에 문자열이나 객체가 포함되어 있는 경우

- 객체는 객체.toString()을 호출하여 문자열로 변환하여 연결

- 기본 타입 값은 문자열롤 변환하여 연결

 

concat()

기존 String 객체에 연결되지 않고 새로운 스트링 객체 리턴

 

 

StrngBuffer 클래스

가변 크기의 문자열 저장 클래스

- Java.lang.StringBuffer

- String 클래스와 달리 문자열 변경 가능

- StringBuffer 객체의 크기는 스트링 길이에 따라 가변적

 

생성자

생성자 설명
StringBuffer() 초기 버퍼의 크기가 16인 스트링 버퍼 객체 생성
StringBuffer(charSequence seq) seq가 지정하는 일련의 문자들을 포함하는 스트링 버퍼 생성
StringBuffer(int capacity) 지정된 초기 크기를 갖는 스트링 버퍼 객체 생성
StringBuffer(String str) 지정된 스트링으로 초기화된 스트링 버퍼 객체 생성

 

주요 메소드

메소드 설명
StringBuffer append(String str) str 스트링을 스트링 버퍼에 덧붙임
StringBuffer append(StringBuffer sb) sb 스트링 버퍼를 현재의 스트링 버퍼에 덧붙임, 현재 스트링 버퍼의 내용이 바뀜
int capacity() 스트링 버퍼의 현재 크기 리턴
StringBuffer delete(int start, int end) start 위치에서 end 위치 앞까지 부분 문자열 삭제
StringBuffer insert(int offeset, String str) str 스트링을 스트링 버퍼의 offset 위치에 삽입
StringBuffer replace(int start, int end, String str) 스트링 버퍼 내의 start 위치의 문자부터 end가 지정하는 문자 앞의 서브 스트링을 str로 대치
StringBuffer reverse() 스트링 버퍼 내의 문자들을 반대 순서로 변경
void setLength(int newLength) 스트링 버퍼 내 문자열 길이를 newLength로 재설정, 현재 길이보다 큰 경우 널 문자('')로 채우며 작은 경우에는 기존 문자열이 잘림

 

 

StringTokenizer 클래스

하나의 문자열을 여러 문자열로 분리

구분 문자(delimiter) - 문자열을 분리할 때 사용되는 기준 문자

토큰(token) - 구분 문자로 분리된 문자열

String query = "name=kitan&addr=seoul&age=21";
StringTokenizer st = new StringTokenizer(query, "&");
// '&'를 구분 문자로 사용

StringTokenizer st = new StringTokenizer(query, "&=");
// '&'와 '='을 구분 문자로 사용

 

String 클래스의 split() 메소드를 이용하여 동일한 구현 가능

 

생성자

생성자 설명
StringTokenizer(String str) str 스트링의 각 문자를 구분 문자로 문자열을 분리하는 스트링 토크나이저 생성
StringTokenizer(String str, String delim) str 스트링과 delim 구분 문자로 문자열을 분리하는 스트링 토크나이저 생성
StringTokenizer(String str, String delim, boolean returnDlims) str 스트링과 delim 구분 문자로 문자열을 분리하는 스트링 토크나이저 생성, returnDelims가 true이면 delim이 포함된 문자도 토큰에 포함됨

 

주요 메소드

메소드 셜명
int countTokens() 스트링 토크나이저가 분리한 토큰의 개수 리턴
boolean hasMoreTokens() 스트링 토크나이저에 다음 토큰이 있으면 true 리턴
String nexToken 스트링 토크나이저에 틀어 있는 다음 토큰 리턴

 

 

Math 클래스

산술 연산 메소드 제공

java.lang.Math

모든 메소드는 static 타입: 클래스 이름으로 바로 호출해야 함

메소드 설명
static double abs(double a) 절댓값 리턴
static double cos(double a) 코사인값 리턴
static double sin(double a) 사인값 리턴
static double tan(double a) 탄젠트값 리턴
static double exp(double a) \(e^{a}\)값 리턴
static double ceil(double a) 올림
static double floor(double a) 내림
static double max(double a, double b) 큰 수 리턴
static double min(double a, double b) 작은 수 리턴
static double random() 0이상 1미만 임의의 실수 리턴
static long round(double a) 반올림 리턴
static double sqrt(double a) 제곱근 리턴

 

 

Calendar 클래스

java.util 패키지

시간과 날짜 정보 저장 관리

 

필드

필드 의미 필드 의미
YEAR 년도 DAY_OF_MONTH 한 달의 날자
MONTH 달(0~11) DAY_OF_WEEK 한 주의 요일
HOUR 시간(0~11) AM_PM 오전, 오후 구분
HOUR_OF_DAY 24시간을 기준으로 한 시간 MINUTE
SECOND MILLISECIND 밀리초

 

객체 생성

Calendar now = Calendar.getInstance();

now객체는 현재 날짜와 시간 정보를 가지고 생성
Calendar는 추상 클래스이므로 new Callendar() 하지 않음

 

날짜와 시간 알아내기

int year = now.get(Calendar.YEAR);
int month = new.get(Calendar.MONTH) + 1;

 

날짜와 시간 설정하기

now.clear(); // 현재 날짜와 시간 정보 삭제
now.set(2016, 11, 25); // 2016년 12월 25일로 설정
now.set(Calendar.HOUR_OF_DAY, 20) // 저녁 8시로 설정
now.set(Calendar.MINUTE, 30); // 30분으로 설정
728x90
반응형