기록하는 개발자

자바 #3 모듈과 패키지 본문

JAVA

자바 #3 모듈과 패키지

밍맹030 2020. 1. 4. 21:55
728x90

모듈과 패키지

#패키지

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

 

패키지 사용

-다른 패키지에 작성된 클래스 사용

-import 사용 안하는 경우 : 소스 내에서 패키지 이름과 클래스 이름의 전체 경로면 표기

Ex) java.util.Scanner(System.in)=new java.util.Scanner(scanner.next());

-import 사용하는 경우: 소스의 시작 부분에 사용하려는 패키지를 명시

Ex) import java.util.Scanner / import java.util.*

-->Scanner scanner=new Scanner(System.in);

 

패키지 선언

-package 패키지명;

-소스 파일의 첫 줄에 선언(맨 위)

 

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

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

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

 

특징

-패키지 계층 구조 : 관련 된 클래스 파일을 하나의 패키지로 계층화->관리 용이

-패키지별 접근 제한 : 패키지 별로 접근 권한 부여 가능

-서로 다른 패키지에서 동일한 이름의 클래스, 인터페이스 사용 가능

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

 

 

#모듈

-여러 패키지와 이미지 등의 자원을 모아 놓은 컨테이너

-개발, 유지보수 등에 적합

-DB 접근 필요 없이 java.base 모듈만 있으면 됨

-->메모리가 열악한 소형 기기에도 응용 프로그램 실행 가능

 

목적

-컴퓨터 시스템의 불필요한 부담을 감소 / 불필요한 모듈 로드되지 않게 함

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

 

주요 패키지

-ava.lang : 자바 language 패키지 / 자동으로 import. import 문 필요 없음

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

-java.util:자바 유틸리티 패키지 /날짜,시간,벡터,해시맵 등의 다양한 유틸리티 c와 인터페이스 제공

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

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

-javax.swing : 자바 GUI 프로그래밍을 위한 스윙 패키지

 

특징

-java.lang 패키지에 포함

-모든 클래스의 슈퍼 클래스로 모든 클래스에 강제 상속 된다.

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

 

주요 메소드

String toString()

-객체를 문자열로 반환

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

-‘객체 + 문자열’ -->’객체.toString()+문자열’로 자동 변환

-개발자는 자신만의 toString() 작성 필요 : Object의 toString() 오버라이딩

 

객체 비교와 equals()

‘==’ 연산자 : 두 개의 레퍼런스를 비교한다.

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

Ex) if(a.equals(b)) print(“a is equal to b”) -->a와 b가 같으면 true가 반환되어 출력문 실행

Ex) point 클래스에 equals() 작성

Wrapper 클래스

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

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

-용도 : 기본 타입의 값을 객체로 다룰 수 있게 한다.

Wrapper 클래스 종류
Wrapper 객체들은 거의 유사하며 대부분의 메소드가 static 타입이다

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

Ex) Interger i=Integer.valueOf(10);

Int ii=i.intValue(); //ii=10

Character c = Character.valueOf('c' );

char cc = c.charValue(); // cc = ’c’

 

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

Ex)int i=Integer.parseInt(Int);

Boolean b=Boolean.parseBoolean(“true”);

 

기본 타입을 문자열로 변환

Ex) String s1=Integer.toString(123); /정수 123을 문자열 123으로 s1에 저장

String s2=Integer.toHexString(123);

 

박싱과 언박싱

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

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

-자동 박싱, 언박싱은 JDK 1.5부터 가능해졌다.

EX) Interger ten=10; /자동 박싱  -->Integer ten=Integer.valueOf(10) 으로 자동 처리

Int n=ten; / 자동 언박싱   ->int n=ten.intValue(); 로 자동 처리

 

String 의 특징과 객체 생성

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

Ex) String str1=”abcd” //스트링 리터럴로 스트링 객체 생성

Char data[]={‘a’, ‘c’,’ ‘d’, ‘b’}; //클래스 생성자를 이용해 스트링 생성

 

스트링 리터럴과 new Stirng()

-스트링 생성 방법 : 리터럴로 생성 ex) String s=”Hello”;

-String 객체로 생성, String t=new String(“Hello”); //힙 메모리에 String 객체 생성

특징

-비교 시 반드시 equals()를 사용 / ‘==’ 사용 x

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

문자열 비교

int compareTo(String anotherString)

-문자열이 같으면 0 return

-이 문자열이 anotherString 보다 사전에 먼저 나오면 음수, 늦게 나오면 양수 return

Ex)

String java=”Java”;         String cpp=”C++”;

int res=java.compareTo(cpp);  -->cpp의 문자열이 java의 문자열보다 빨리 나오므로 양수 리턴

 

문자열 연결

(1) ‘+’연산자로 문자열 연결

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

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

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

 

(2) String concat(Stirng str)을 이용한 문자열 연결

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

-->기존 객체가 가리키는 ‘abcd’ 는 가비지가 되고 s1은 새로 생성된 ‘abcdefgh’ 를 가리킨다.

 

-문자열 내의 공백 제거 : String trim() ->문자열 앞 뒤 공백 문자(\n,\t,‘ ’)를 제거한 문자열 리턴

-문자열의 문자 : char charAt(int index)   -->문자열 내의 index 번 째의 문자를 리턴

StringBuffer 클래스

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

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

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

 

-생성 : StringBuffer sb=new StringBuffer(“java”);

StringBuffer 클래스의 생성자
StringBuffer 클래스의 주요 메소드

Ex)

StringBuffer Sb=new StringBuffer(“a”);

Sb.append(“ pencil”);

Sb.insert(2,”nice ”); // 현재 문자열 : a nice pencil

Sb.replace(2,6,”bad”); // 인덱스 2부터 6전까지에 bad 로 대체  -->현재 문자열 : a bad pencil

Sb.delete(0,2); //0부터 2 이전의 인덱스에 있는 문자를 삭세  ->현재 문자열 : bad pencil

Sb.reverse(); // 문장열 거꾸로 뒤집기 -->licnep dab

Int n=sb.length(); //n=10

Char c=sb.charAt(3); // c=’c’

Sb.setlength(3); // 현재 문자열 -->lic

StringTokenizer 클래스

-java.util.StringTokenizer

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

- StringTokenizer st=new StringTokenizer(문자열 이름, “구분 문자”);

 

String query=”name=kitae&addr*=seoul&age=21”

StringTokenizer st=new StringTokenizer(query, “&”);

-->문자열 query를 문자 ’&’를 기준으로 분리

 토큰 : “name=kitae”, “addr=seoul”, “age=21”

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

-StringTokenizer st=new StringTokenizer(query, “&=”);라고 쓰면 구분 문자는 ‘&’ 과 ‘=’로 2개 이다.

 

StringTokenizer 의 생성자와 주요 메소드

Math 클래스

-산술 연산 메소드를 제공하는 패키지

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

 

난수 발생

-static double random() : 0.0이상 1.0 미만의 임의의 double 값을 반환

ex) int n=(int)(Math.random()*100+1);

-->  1에서 100사이의 난수를 하나 뽑아 n에 저장

-->  +1을 뒤에 안붙이면 0부터 99 사이에서 난수 발생

 

Ex) int n=(int)(Math.random()*157+100);

--> 원래 0부터 156까지인데 +1하면 1~156, +10하면 10~167 이므로 +100 하면 100~256

즉, a부터 b까지를 랜덤으로 뽑고 싶으면 Math.random()*(b-a+1)+a

Math 클래스의 메소드

Calender 클래스

-특징 : java.util 패키지에 들어있으며 시간과 날짜 정보를 저장, 관리 한다.

728x90

'JAVA' 카테고리의 다른 글

자바 #6 이벤트 처리  (0) 2020.01.05
자바 #5 JAVA GUI  (0) 2020.01.05
자바 #4 컬렉션  (0) 2020.01.05
자바 #2 인터페이스  (0) 2020.01.04
자바 #1 상속  (0) 2020.01.04