yoni
[17][OOP] 자바 시스템에서 제공하는 Package Import, String, DecimalFormat, Date, SimpleDateFormat, Random class 본문
java of educational by contents
[17][OOP] 자바 시스템에서 제공하는 Package Import, String, DecimalFormat, Date, SimpleDateFormat, Random class
yoni-1117 2018. 12. 2. 12:35[01] 자바 시스템에서 제공하는 Package Import
- 개발자가 다양한 분야(Web, IO(File), Network, JDBC DBMS, Graphic 2D/3D, System등)의
프로그램을 개발할 수 있도록 Package 형태로 바로 사용
가능한 기초 소스 제공, 이 package를 사용하지 않으면 개발이 매우 어려움으로
자바에서 기본적으로 제공되는 패키지의 사용은 필수입니다.
이런 API는 자바가 Web, Mobile 분야에서 많이 사용되는 환경을 생성하게 되었습니다.
- 제공되는 클래스들은 패키지(Package)로 구성(그룹화)되어 있음.
- 자바 개발자는 import 명령어를 이용하여 제공되는 자바 코드를 자신의
프로그램에 포함시켜서 개발합니다.
- 기초 코드가 제공됨으로 개발 시간 단축과 개발 부담을 혁신적으로 줄일 수 있습니다.
- 소스의 제공은 자바가 다른 언어들에 비해서 인터넷 및 다양한 분야의
프로그램을 제작하기 쉬운 환경을 제공합니다.
예) 아래의 클래스는 자바 언어 차원에서 전부 제작되어 제공되며 개발자는 이용만 하면 됩니다.
import java.text.DecimalFormat; // 천단위 콤마 출력
import java.lang.Integer; // 정수 변환 지원
import java.lang.Double; // 실수 변환 지원
import java.lang.String; // 문자열 처리 지원
import java.lang.System; // 출력 및 처리속도 측정등 시스템 호출 관련
import java.text.SimpleDateFormat; // 형식이 지정된 날짜 출력
- C, C++ 언어 + 자료구조 + 알고리즘
1) String, System클래스는 별다른 import문이 필요 없습니다.
이유는, 많이 사용되는 java.lang.* 패키지의 모든 클래스는 자동으로
import 됩니다.
그외의 패키지는 import(수입 선언) 라는 명령어로 클래스나,
인터페이스가 있는 패키지 즉 폴더를 명시해주어야 인식이 가능합니다.
2) JDK 설치 폴더의 src.zip 파일의 압축을 해제하면, 개발자가 사용할 수 있는
자바 API의 소스를 확인할 수 있습니다.
3) 특정 소스에서 F3 눌렀을 때 소스의 추적 설정
프로그램을 개발할 수 있도록 Package 형태로 바로 사용
가능한 기초 소스 제공, 이 package를 사용하지 않으면 개발이 매우 어려움으로
자바에서 기본적으로 제공되는 패키지의 사용은 필수입니다.
이런 API는 자바가 Web, Mobile 분야에서 많이 사용되는 환경을 생성하게 되었습니다.
- 제공되는 클래스들은 패키지(Package)로 구성(그룹화)되어 있음.
- 자바 개발자는 import 명령어를 이용하여 제공되는 자바 코드를 자신의
프로그램에 포함시켜서 개발합니다.
- 기초 코드가 제공됨으로 개발 시간 단축과 개발 부담을 혁신적으로 줄일 수 있습니다.
- 소스의 제공은 자바가 다른 언어들에 비해서 인터넷 및 다양한 분야의
프로그램을 제작하기 쉬운 환경을 제공합니다.
예) 아래의 클래스는 자바 언어 차원에서 전부 제작되어 제공되며 개발자는 이용만 하면 됩니다.
import java.text.DecimalFormat; // 천단위 콤마 출력
import java.lang.Integer; // 정수 변환 지원
import java.lang.Double; // 실수 변환 지원
import java.lang.String; // 문자열 처리 지원
import java.lang.System; // 출력 및 처리속도 측정등 시스템 호출 관련
import java.text.SimpleDateFormat; // 형식이 지정된 날짜 출력
- C, C++ 언어 + 자료구조 + 알고리즘
JAVA 언어 + 자료구조 일부를 API(Class)로 지원 + 알고리즘 일부를 API(Class)로 지원
1) String, System클래스는 별다른 import문이 필요 없습니다.
이유는, 많이 사용되는 java.lang.* 패키지의 모든 클래스는 자동으로
import 됩니다.
그외의 패키지는 import(수입 선언) 라는 명령어로 클래스나,
인터페이스가 있는 패키지 즉 폴더를 명시해주어야 인식이 가능합니다.
2) JDK 설치 폴더의 src.zip 파일의 압축을 해제하면, 개발자가 사용할 수 있는
자바 API의 소스를 확인할 수 있습니다.
3) 특정 소스에서 F3 눌렀을 때 소스의 추적 설정
- 소스 연결이안되어있으면 아래처럼 출력됩니다.
- 'src.zip'파일을 선택합니다.
* 작동이 안되면 자바가 설치된 폴더를 선택합니다.
4) 자바 소스를 압축을 풀어도 코드가 매우 많아 참조가 어려움으로 요약 정리한
HTML 문서를 웹 상에서 확인 할 수 있습니다.
- API(Application Programming Interface: 응용 프로그래밍 인터페이스) 문서
. http://docs.oracle.com/javase/6/docs/api/
. http://docs.oracle.com/javase/8/docs/api/
- 패키지 import시 API 문서를 참고 합니다.
5) 자바 시스템에서 제공하는 패키지의 사용
6) 세부 컴파일 과정
[02] Java 패키지 활용
- API(Application Programming Interface): 프로그램 제작시 사용하는 코드 집합
1. String class API의 사용
[실행 화면]
1) how was the java class?
2) HOW WAS THE JAVA CLASS?
3) 23
4) Ho
5) JAVA
6) JAVA class?
7) 동일한 문자열
8) 동일한 문자열
9) 전송 가능
10) 전송 가능
11) 전송 불가능
12) 1
13) -1
14) str: How was the JAVA class?
14) res: How was the JBVB class?
15) str: How was the JAVA class?
15) res: How was the JSP class?
16) CSS 개발자를 위한 CSS
▷ /src/oop2/StringTest.java
-----------------------------------------------------------------------------------
package oop2;
public class StringTest {
public static void main(String[] args) {
String str = "How was the JAVA class?";
String str2 = new String("How was the JAVA class?");
//문자열이 다르면 해시코드가 같을 수가 없다
//new로 객체를 생성해서 문자열을 넣던 변수를 생성해서 문자열을 넣던 같은 메모리에 할당한다
System.out.println(str.hashCode());
System.out.println(str2.hashCode());
//생성자를 호출하건 호출하지 않건 메모리는 똑같다
String str3 = new String("How was the JAVA class?");
System.out.println(str3.hashCode());
//str 변수의 값을 소문자로 모두 바꾸기
String res = str.toLowerCase();
System.out.println("1) "+res);
//str 변수의 값을 대문자로 모두 바꾸기
res = str.toUpperCase();
System.out.println("2) "+res);
int count = str.length();
System.out.println("3) "+count);
res = str.substring(0, 2);
System.out.println("4) "+res);
res = str.substring(12, 16);
System.out.println("5) "+res);
res = str.substring(12);
System.out.println("6) "+res);
res = "JAVA";
if(res.equals("JAVA")){
System.out.println("7) 동일한 문자열");
}
if (res.equalsIgnoreCase("java")){
System.out.println("8) 동일한 문자열");
}
if ("Winter.jpg".endsWith(".jpg")){
System.out.println("9) 전송 가능");
}
if("Winter.Exe".endsWith(".exe")){
System.out.println("10) 전송 불가능");
} else {
System.out.println("10) 전송 가능");
}
if("Winter.Exe".toLowerCase().endsWith(".exe")){//메소드 연쇄 호출
System.out.println("11) 전송 불가능");
} else {
System.out.println("11) 전송 가능");
}
int index = "ABC".indexOf("B");
System.out.println("12) " + index);
index = "ABC".indexOf("W");
System.out.println("12) " + index);//못찾으면 -1이다
res = str.replace('A', 'B');
System.out.println("14) str: " + str);
System.out.println("14) res: " + res);
res = str.replace("JAVA", "JSP");
System.out.println("15) str: " + str);
System.out.println("15) res: " + res);
System.out.println("16) JAVA 개발자를 위한 JAVA".replace("JAVA", "CSS"));
}
}
-----------------------------------------------------------------------------------
2. DecimalFormat, Date, Random class API의 사용
- '\'는 특수 문자의 기능을 단순 문자로 변경합니다.
[실행 화면]
2. DecimalFormat, Date, Random class API의 사용
- '\'는 특수 문자의 기능을 단순 문자로 변경합니다.
[실행 화면]
1) 1,500,000
2) 회비: \ 10,000 원
3) 회비: ₩ 10,000 원
4) 회비: "10,000 원"
5) ₩ 2,200,000 원
6) 2,099
7) 2,098.57
8) 2,500,000.57
9) 2018. 10. 21 오후 2:15:17
10) 2018-10-21
11) 20181021
12) 2018년 10월 21일
13) 2018-10-21 02:15:17
-------------------------------
1840444887 -1520836417 425637706 -1532252817 1371019243
0 0 2 3 4 0 2 1 0 1
4 3 1 2 2 2 5 2 4 2
-14 11 -6 -5 35 33 14 34 38 40
▷ /src/oop2/APITest.java
-----------------------------------------------------------------------------------
package oop2;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
public class APITest {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#,###,##0");
String str = df.format(1500000);
System.out.println("1) " + str);
System.out.println("2) 회비: \\ 10,000원");
System.out.println("3) 회비: \"10,000원\"");//역슬레시를 쓰는 이유는 ""의 의미를 무마시킴
System.out.println("3) 회비: ₩ 10,000원");//ㄹ한자로 특수문자사용
df = new DecimalFormat("#,###,##0 원");
str = df.format(2200000);
System.out.println("5) " + str);
df = new DecimalFormat("#,###,##0 원");
str = df.format(2098.567);
System.out.println("6) " + str); // 2,099 반올림됨
df = new DecimalFormat("#,##0.##");
str = df.format(2098.567);
System.out.println("7) " + str); // 2,098.57 반올림됨
df = new DecimalFormat("#,##0.##");
str = df.format(2500000.567);
System.out.println("8) " + str); // 2,098.57 반올림됨
Date date = new Date();
System.out.println("9) " + date.toString());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
str = sdf.format(date);
System.out.println("10) " + str);
sdf = new SimpleDateFormat("yyyyMMdd");
str = sdf.format(date);
System.out.println("11) " + str);
sdf = new SimpleDateFormat("yyyy년 MM월 dd일");
str = sdf.format(date);
System.out.println("12) " + str);
sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
str = sdf.format(date);
System.out.println("13) " + str);
System.out.println("---------------------------------------------");
Random rnd = new Random();
for (int i=1; i<=5; i++){
System.out.print(rnd.nextInt() + " ");
}
System.out.println();
for (int i=1; i<=10; i++){
System.out.print(rnd.nextInt(5) + " ");// 0~4
}
System.out.println();
for (int i=1; i<=10; i++){
System.out.print((rnd.nextInt(5) +1) + " ");// 1~5
}
System.out.println();
for (int i=1; i<=10; i++){
System.out.print((rnd.nextInt(81) -40) + " ");// -40~40
}
System.out.println();
}
}
-----------------------------------------------------------------------------------
[참고] 1차원 배열을 선언하고 중복되지않는 난수를 처리하는 클래스를 구현하세요.
- 회원 번호의 범위는 1 부터 30까지입니다.
- 필수 코드
int[] members = new int[10]; // 10개
[실행 화면]
▷ /src/oop2/RndTest.java
-----------------------------------------------------------------------------------
- 회원 번호의 범위는 1 부터 30까지입니다.
- 필수 코드
int[] members = new int[10]; // 10개
[실행 화면]
새로 발생된 난수: 28
배열 0 에 새로운값 저장: 28
새로 발생된 난수: 30
배열 1 에 새로운값 저장: 30
새로 발생된 난수: 6
배열 2 에 새로운값 저장: 6
새로 발생된 난수: 13
배열 3 에 새로운값 저장: 13
새로 발생된 난수: 4
배열 4 에 새로운값 저장: 4
새로 발생된 난수: 27
배열 5 에 새로운값 저장: 27
새로 발생된 난수: 23
배열 6 에 새로운값 저장: 23
새로 발생된 난수: 7
배열 7 에 새로운값 저장: 7
새로 발생된 난수: 14
배열 8 에 새로운값 저장: 14
새로 발생된 난수: 23
-> 배열에 존재: 23
새로 발생된 난수: 7
-> 배열에 존재: 7
새로 발생된 난수: 19
배열 9 에 새로운값 저장: 19
28 30 6 13 4 27 23 7 14 19
▷ /src/oop2/RndTest.java
-----------------------------------------------------------------------------------
package oop2;
import java.util.Random;
public class RndTest {
public static void main(String[] args) {
int[] members = {0,0,0,0,0,0,0,0,0,0};
Random rnd = new Random();
int index = 0; // 배열 저장 위치
int su = 0; // 하나의 난수
boolean sw = false; // 동일 여부
while(true) {
su = rnd.nextInt(30) + 1; // 1 ~ 30
System.out.println("새로 발생된 난수: " + su);
// 동일한 값이 있는지 검사
for (int i=0; i<= 9; i++) {
if (members[i] == su) {
System.out.println("-> 배열에 존재: " + su);
sw= true; // 중복 발생, 존재함
break; // for 문 종료
}
}
if (sw == false) {
System.out.println("배열 " + index + "에 새로운 값 저장: " + su);
members[index] = su; // 새로운 값을 배열에 저장
index = index + 1; // 배열 index(순서값) 증가
}
if (index == 10) { // 마지막인지 검사
break; // while 문 종료
}
sw = false; // 값이 존재하지 않는 경우를 가정하고 초기화
}
System.out.println();
for (int i=0; i <= 9; i++) {
System.out.print(members[i] + " ");
}
}
}
-----------------------------------------------------------------------------------
'java of educational by contents' 카테고리의 다른 글
[19][OOP] Amateras UML 툴 설치, 상속(Inheritance), 사용자(개발자) 정의 Exception (0) | 2018.12.02 |
---|---|
[18][OOP] 예외처리(Exception), throws 문 (0) | 2018.12.02 |
[16][OOP] package(Folder, Directory), Package Import (0) | 2018.12.01 |
중간점검 test (0) | 2018.12.01 |
[15][OOP] Constructor(생성자) (0) | 2018.12.01 |
Comments