일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자바스크립트
- 코딩테스트 고득점 Kit
- websocket
- 백준
- react hook
- JavaScript
- useEffect
- 데이터모델링과마이닝
- 컴퓨터 네트워크
- 프로그래머스 자바
- 자바
- 코틀린
- design pattern
- 프로그래밍 언어론
- useState
- NextJS
- react firebase
- 장고
- vanillaJS
- React JS
- 자바 공부
- 코딩테스트 고득점 Kit 완전탐색
- 프로그래머스 완전탐색
- Java
- 프로그래머스
- codesandbox
- react
- 리액트
- 리액트 훅
- 디자인 패턴
- Today
- Total
기록하는 개발자
자바 #3 모듈과 패키지 본문
모듈과 패키지
#패키지
-서로 관련된 클래스, 인터페이스의 컴파일 된 클래스 파일들을 하나의 디렉터리에 묶어 놓은 것
패키지 사용
-다른 패키지에 작성된 클래스 사용
-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가 반환되어 출력문 실행
Wrapper 클래스
-자바의 기본 타입을 클래스화 한 8개 클래스
-이름이 Wrapper인 클래스는 존재하지 않음
-용도 : 기본 타입의 값을 객체로 다룰 수 있게 한다.
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”);
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개 이다.
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
Calender 클래스
-특징 : java.util 패키지에 들어있으며 시간과 날짜 정보를 저장, 관리 한다.
'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 |