Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- JAVA 11
- programmers
- pypy3
- 명품 자바 프로그래밍
- level1
- Codeforces Round #802 (Div. 2)
- 기본
- 기초
- 응용
- GROUP BY 절
- Python 3
- 코딩테스트
- Codeup
- SELECT 절
- 헤드퍼스트 디자인패턴
- java
- 단계별로 풀어보기
- HAVING 절
- 백준
- BOJ
- baekjoon
- 기초100제
- 자바
- 공공데이터
- Java11
- 이론
- 개념
- SQLD / SQLP
- 파이썬
- Python
Archives
- Today
- Total
Development Project
Chapter06 모듈과 패키지 개념, 자바 기본 패키지 본문
- 패키지(Package)
- 패키지의 필요성
- 비슷한 성격의 클래스들끼리 묶을 수 있어 클래스의 분류가 용이
- 다른 사람이 작성한 자바 클래스나 라이브러리를 사용해야 할 때 클래스명이 동일한 경우도 발생할 수 있음
- 하지만 패키지명이 다르면 클래스명이 동일해도 충돌없이 사용 가능 ( 경로명이 달라지기 때문 ) - 패키지의 개념
- 서로 관련된 클래스와 인터페이스의 컴파일 된 클래스 파일들을 하나의 디렉토리에 묶은 것
- 패키지의 필요성
- import와 클래스 경로
- 패키지에 작성된 클래스를 사용하는 방법
- import를 이용할 때
- 소스 내에서 패키지 이름과 클래스 이름의 전체 경로명을 써주어야 함public class ImportExample { public static void main(String[] args) { java.util.Scanner scanner = new java.util.Scanner(System.in); System.out.println(scanner.next()); } }
- import를 이용하지 않을 때
- 소스의 시작 부분에 사용하려는 패키지 명시import java.util.Scanner; // 또는 import java.util.*; // * : 현재 패키지 내의 클래스만을 의미 (하위패키지의 클래스는 X) public class ImportExample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); } }
- import를 이용할 때
- 패키지에 작성된 클래스를 사용하는 방법
- 패키지 만들기
- 패키지 선언 [ package 패키지명 ] : 컴파일한 클래스 파일을 패키지명의 디렉터리에 저장하라는 명령줄
package Graphic; // Line 클래스를 Graphic 패키지에 저장 import UI.Tools; // Tools 클래스의 경로명 알림 public class Line{ public void draw() { Tools t = new Tools(); } }
- 패키지의 특징
- 관련된 클래스 파일을 하나의 패키지로 계층화하여 관리가 용이함
- 패키지별로 접근을 제한할 수 있음
- 서로 다른 패키지에 이름이 같은 클래스와 인터페이스가 존재 가능 == 동일한 이름이라도 사용 가능
- 높은 소프트웨어 재사용성
- 디폴트 패키지
- package 선언문 없이 만들어진 클래스의 패키지
- 디폴트 패키지는 현재 디렉터리
- 디폴트 패키지
- 패키지 선언 [ package 패키지명 ] : 컴파일한 클래스 파일을 패키지명의 디렉터리에 저장하라는 명령줄
- 모듈 개념
- 모듈
- 패키지의 상위 개념
- 자바 컴포넌트들을 필요에 따라 조립하여 사용하기 위함
- 컴퓨터 시스템의 불필요한 부담 감소
- 모듈
- 자바 JDK에서 제공하는 패키지
- java.lang
- String, 수학 함수, 입출력 등 자바 프로그래밍에 필요한 기본적인 클래스와 인터페이스
- 자동으로 import됨 - java.util
- 자바 유틸리티 패키지
- 날짜, 시간, 벡터, 해시맵 등과 같은 다양한 유틸리티 클래스와 인터페이스를 제공 - java.io
- 키보드, 모니터, 프린터, 디스크 등에 입출력 가능한 클래스와 인터페이스 제공 - java.awt
- 자바 GUI 프로그래밍을 위한 클래스와 인터페이스 제공 - javax.swing
- 자바 GUI 프로그래밍을 위한 스윙 패키지
- java.lang
- Object 클래스
- 특징
- java.lang 패키지에 포함
- 모든 클래스의 슈퍼클래스(부모클래스) - 주요 메소드
=> toString을 오버라이딩 하여 사용하면, 원하는 출력형식 또는 처리형식으로 결과를 얻을 수 있음
- 특징
- Wrapper 클래스
- 개념
- 자바의 기본 타입을 클래스화한 8개 클래스 ( 기본타입의 값을 객체로 다룰 수 있게 함) - Wrapper 활용 방법
- 기본 타입의 값을 Wrapper 객체로 변환 : 박싱(boxing)
- 기본 타입의 값으로
Integer i = Integer.valueOf(10); Character c = Character.valueOf("c"); Double d = Double.valueOf(3.14); Boolean b = Boolean.valueOf(true); // 자동 박싱 Integer ten = 10;
- 문자열로
Integer I = Integer.valueOf("10"); Double d = Double.valueOf("3.14"); Boolean b = Boolean.valueof("false");
- Float를 만들 때
Float f = Float.valueOf((double) 3.14);
- 기본 타입의 값으로
- 객체로부터 기본 값 알아내기 : 언박싱(unboxing)
int ii = i.intValue(); // ii = 10 char cc = c.charValue(); // cc = ’c double dd = d.doubleValue(); // dd = 3.14 boolean bb = b.booleanValue(); // bb = true // 자동 언박싱 int n = i;
- 문자열을 기본 데이터 타입으로 변환
int i = Integer.parseInt("123"); boolean b = Boolean.parseBoolean("true"); double f = Double.parseDouble("3.14");
- 기본 타입을 문자열로 변환
String s1 = Integer.toString(123); String s2 = Integer.toHexString(123); String s3 = Double.toString(3.14); String s4 = Charater.toString('a'); String s5 = Boolean.toString(true);
- 기본 타입의 값을 Wrapper 객체로 변환 : 박싱(boxing)
- 개념
- String 클래스 ( java.lang.String)
- String 생성
- 리터럴로 : JVM이 리터럴 관리, 응용프로그램 내에서 공유됨
String str1 = "abcd";
- String 클래스의 생성자로 : Heap 메모리에 String 객체가 생성
char data[] = {'a', 'b', 'c', 'd'}; String str2 = new String(data); String str3 = new String("abcd");
- String의 생성자
- String의 생성자
- 리터럴로 : JVM이 리터럴 관리, 응용프로그램 내에서 공유됨
- 문자열 연산
- 문자열 비교 [ compareTo( String anotherString ) ]
- anotherString보다 먼저나오면 음수, 나중에 나오면 양수, 같으면 0을 리턴함
- 무조건 문자열 비교는 ==이 아닌 equals임String java= "Java"; String cpp = "C++"; int res = java.compareTo(cpp); if(res == 0) System.out.println("the same"); else if(res < 0) System.out.println( java + " < " + cpp); else System.out.println( java + " > " + cpp);
bc) equals는 내용을 비교하기 때문 - 문자열 연결
- +연산자
- 객체는 객체.toString() 호출
- 기본 타입 값은 문자열로 변환하여 연결
System.out.println("abcd" + 1 + true + 3.13e-2 + 'E' +" fgh");
- String객체.concat(String str) 이용
- 기존 String 객체에 연결되지 않고, 새로운 String 객체를 리턴함
String s = new String("Hello"); String t = s.concat("Java");
- +연산자
- 문자열 내 공백제거 [ String객체.trim(); ]
- 문자열 앞 뒤 공백문자(tab, enter, space)를 제거한 문자열을 리턴함
String a = " abcd efg "; String b = " xyz\t "; String c = a.trim(); // c = "abcd efg" String d = b.trim(); // d = "xyz"
- 문자열에서 문자 추출 [ String객체.charAt(int index); ]
String a = "class"; char c = a.charAt(2); // c = 'a'
- 문자열 변경 [ String객체.replace("변경 전 문자열", "변경 후 문자열"); ]
a = new String("C#"); a = a.replace("C#", "Java"); // a = "Java"
- 문자열 분리 [ String객체.split("구분자"); ]
String a = "Java,C++" String s[] = a.split(","); // s[0] = "Java", s[1] = "C++"
- 서브스트링 추출 ( 문자열 일부 추출 ) [ String객체.substring(인덱스); ]
a = "Java,C++"; a = a.substring(5); // a = "C++"
- 문자열 비교 [ compareTo( String anotherString ) ]
- String 생성
- StringBuffer 클래스
- StringBuffer 클래스
- 가변 크기의 문자열 저장 클래스
- StringBuffer 객체의 크기는 스트링 길이에 따라 가변적 - StringBuffer 클래스 생성
=> 생성자를 이용해 생성 가능StringBuffer sb = new StringBuffer("java");
- 생성자
- 생성자
- 문자열 연산
- 문자열 추가
- append사용 [ StringBuffer객체.append( "추가할 문자열" ) ]
StringBuffer sb = new StringBuffer("a"); sb.append(" pencil"); // sb = "a pencil"
- insert 사용 [ StringBuffer객체.insert( 인덱스, "추가할 문자열" ) ]
StringBuffer sb = new StringBuffer("a pencil"); sb.insert(2, "nice "); // sb = "a nice pencil"
- append사용 [ StringBuffer객체.append( "추가할 문자열" ) ]
- 문자열 대체 [ StringBuffer객체.replace( 첫 인덱스, 마지막 인덱스, "바꿀 문자열" ); ]
StringBuffer sb = new StringBuffer("a nice pencil"); sb.replace(2, 6, "bad"); // sb = "a bad pencil"
- 문자열 삭제 [StringBuffer객체.delete( 첫 인덱스, 마지막 인덱스 ); ]
StringBuffer sb = new StringBuffer("a bad pencil"); sb.delete(0, 2); // sb = "bad pencil"
- 문자열 뒤집기 [ StringBuffer객체.reverse(); ]
StringBuffer sb = new StringBuffer("bad pencil"); sb.reverse(); // sb = "licnep dab"
- 문자열 길이 [ StringBuffer객체.length(); ]
StringBuffer sb = new StringBuffer("licnep dab"); sb.length; // 10
- 문자열에서 특정 인덱스 추출 [ StringBuffer객체.charAt(인덱스); ]
StringBuffer sb = new StringBuffer("licnep dab"); sb.charAt(3) // 'n'
- 문자열 길이 설정 [ StringBuffer객체.setLength(길이); ]
StringBuffer sb = new StringBuffer("licnep dab"); sb.setLength(3) // "lic"
- 문자열 추가
- StringBuffer 클래스
- StringTokenizer 클래스
- StringTokenizer 클래스 ( java.util.StringTokenizer )
- 하나의 문자열을 여러 문자열로 분리
- String클래스의 split() 메소드로 동일하게 구현 가능 - StringTokenizer 클래스 생성
import java.util.StringTokenizer; public class StringTokenizerEx { public static void main(String[] args){ StringTokenizer st = new StringTokenizer("홍길동/장화/홍련", "/"); while(st.hasMoreTokens()){ System.out.println(st.nextToken()); } } } /* *홍길동 *장화 *홍련 */
- StringTokenizer 클래스 ( java.util.StringTokenizer )
- Math 클래스
- Math 클래스 ( java.lang.Math )
- 산술 연산 메소드 제공
- 모든 메소드는 static 타입이므로, 클래스 이름으로 호출해야함 - Math 클래스를 이용한 난수 발생
=> Random 클래스를 이용해 난수를 발생시킬 수 있음Math.random()*100; // 0.0 ~ 99.99.. 사이의 실수 리턴 Math.random()*100+1; // 1.0 ~ 100.99.. 사이의 실수 리턴 (int)(Math.random()*100+1) // 1 ~ 100 사이의 정수 리턴
- Random 클래스 ( java.util.Random )
- int, long, float, double 등의 다양한 형의 난수를 만들어 제공함
Random rd1 = new Random();
- Random 클래스 ( java.util.Random )
- Math 클래스 ( java.lang.Math )
- Calendar 클래스
- Calendar 클래스 ( java.util.Calendar )
- 시간과 날짜 정보를 관리
- Calendar 클래스의 각 시간 요소를 설정하거나 알아내기 위한 필드 - Calendar 객체 생성
- now 객체는 현재 날짜와 시간 정보를 가지고 생성됨Calendar now = Calendar.getInstance();
- Calendar는 추상 클래스이므로 new Calendar() 하지 않음 - 날짜, 시간 정보 추출하기
int s = now.get(Calendar.필드이름);
- 날짜, 시간 정보 설정
Calendar firstDate = Calendar.getInstance(); firstDate.clear(); firstDate.set(2016, 11, 25); // 2016년 12월 25일. 12월은 11로 설정 firstDate.set(Calendar.HOUR_OF_DAY, 20); // 저녁 8시로 설정 firstDate.set(Calendar.MINUTE, 30); // 30분으로 설정
- Calendar 클래스 ( java.util.Calendar )
'Language > Java' 카테고리의 다른 글
Chapter05 상속 (0) | 2021.12.27 |
---|---|
Chapter04 클래스와 객체 (0) | 2021.12.22 |
Chapter03 반복문과 배열 그리고 예외 처리 (0) | 2021.12.20 |
Chapter02 자바 기본 프로그래밍 (0) | 2021.12.20 |
Chapter01 자바시작 (0) | 2021.12.19 |
Comments