티스토리 뷰
Chapter 10. 기본 API 클래스 알아보기
▶ 학습 목표
: API가 무엇인지 알고 기본적으로 제공하는 클래스를 적절하게 사용할 수 있다.
10-5. java.util.Scanner
: Scanner 클래스는 값을 직접 입력해주는 것을 도와주는 클래스이다.
문자 데이터를 읽어오는데 도움을 주는 클래스이다.
Scanner sc = new Scanner(System.in); //Scanner 클래스 생성
String input = sc.nextLine(); //문자열 입력 받음
sytem.in : 클래스명.변수명
변수 : 참조변수, 전역변수, 스태틱 변수
Scanner() : 스캐너 클래스의 생성자 함수()
생성자는 해당 클래스를 객체생성, 주소생성 후 주소를 리턴한다.
new : 객체 생성을실행하는 명령어
= : 대입연산자. 오른쪽 항목을 왼쪽으로 대입(정수 ,실수, 문자, 논리, 주소)관련 변수가 왼쪽에 있어야함
Scanner은 문자나 정수만 입력을 도와주는 것이 아니다.
입력받을 값이 논리값이면 Nextboolean(), 바이트이면 byte Nextbyte(); 이러한 형식과 같이 next 뒤에 자료형을 붙인 메서드명을 사용한다.
또한, 지금까지는 입력하는 것으로만 알고 있었지만 문자데이터를 읽어오는데 도움을 주는 클래스이므로,
다양한 소스 코드로 부터 읽어 올 수 있다.
Scanner(File file)
Scanner(InputStream source)
Scanner(String source)
Scanner(Readalbe source)
ex) 파일에 있는 문자 읽어오기
sample이라고 하는 텍스트 파일을 만들어준다.
코드를 작성하면 오류가 발생한다.
FileIn[utStream 파라미터로 넣어준 경로에 파일이 없을 수도 있기 때문에 오류가 발생한다.
그렇기 때문에 catch-try를 작성해주어야한다.
작성을 완료 한 후 파일 안의 문자들이 출력된 것을 볼 수 있다.
package chapter10;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class exam_444 {
public static void main(String[] args)
{
FileInputStream fis = null;
try
{
fis = new FileInputStream("src\\chapter10\\sample.txt");
//글자를 읽어온다.(byte기반한글자식 읽어옴(2바이트))
//한글자씩 객체에게 넣어준다ㅏ.
}
catch (Exception e)
{
e.printStackTrace();
}
Scanner s = new Scanner(fis); //입력받은파일글자들을 사용함
while(s.hasNext()) //다음줄에 값 가지고있으면 참 아니면 거짓
{
System.out.println(s.nextLine());
}
}
}
* FileInputStream 은 byte를 기반으로 한 것으로 한글자(2byte)씩 글자를 읽어온다.
(한글자씩 객체에게 넣어줌)
* Scanner s = new Scanner(fis) 는 입력 받은 파일의 글자들을 사용한다는 뜻이다.
* s.hasNext()는 다음줄에 값을 가지고 있으면 true이고 가지고 있지 않으면 false를 반환한다.
10-6. BigDencimal
: 소숫점 연산을 하고자 할때 상세한 값을 나타내기 위해 사용한다.
double과 long으로 소수점 연산을 할 때 오차가 나는 부분을 보완한다.
10-7. Wrapper
: 기본 자료형을 객체로 다루고자할 때 사용한다.
기본 자료형(boolean, char, byte, short, int, long, double, float)을 래퍼 클래스화 시켜준다.
ex) 기본자료형을 객체로 만들어 사용
Integer i = new Integer(100); //기본자료형을 객체로 만들어줬다
Double d = new Double(3.14);
객체로 사용하게 되면 주소로 관리가 되어 비교연산자 사용이 불가능하고 equals로 비교해야한다.
- 래퍼 클래스(Wrapper) → 기본 자료형
: 자료형 이름 + Value()의 메서드를 사용하면 기본 자료형으로 변경된다.
Integer i = new Integer(100);
int a = i.int.Value(); //int형으로 변환
double b = i.doubleValue(); //double형으로 변환
- 문자열 → 숫자
int a = Integer.parseInt("100"); //문자 100이 int형 100으로 변환
double b = Double.parseDouble("3.14");
- 숫자 → 문자열
int number = 36;
String s = Integer.toString(number);
System.out.println(s+36); //3636으로 출력
- 문자열 → 래퍼 클래스
Integer i = Integer.valueOf("100");
Float f = Float.valueOf("2.65");
연한하려면 문자를 정수 등 숫자로 변환해야한다.
- 오토박싱
기본 자료형을 자동으로 객체자료형으로 변환시켜주는 것이다.
- 언박싱
오토박싱과의 반대로 객체자료형을 기본 자료형으로 변환시켜준다.
10-8. Timer/TimerTask
: 원하는 특정 시간에 코드를 실행하거나 특정 시간 간격으로 반복되는 작업
TimerTask를 상속 받는 새로운 클래스 선언을 먼저해야한다.
그리고 TimerTask 클래스의 run 추상 메서드를 하고자하는 작업으로 오버라이딩한다.
→ 오버라이딩하는 이유는 추상 메서드는 메서드 안의 내용이 없기 때문에 기능을 하려면 오버라이딩해야한다.
package chapter10;
import java.util.Timer;
import java.util.TimerTask;
class work1 extends TimerTask
{
@Override
public void run()
{
System.out.println("work1 실행");
}
}
class work2 extends TimerTask
{
@Override
public void run()
{
System.out.println("work2 실행");
}
}
public class timer1
{
public static void main(String[] args)
throws InterruptedException //throws 내가 처리안함
{
Timer t = new Timer(true); //프로그램 종료시 객체를 자동으로 없애준다.(=close)
TimerTask w1 = new work1();
TimerTask w2 = new work2();
t.schedule(w1,3000);
t.schedule(w2,1000); //먼저처리 됨(시간이 짧음)스케줄링
Thread.sleep(4000); //4초대기함
System.out.println("모든 작업 종료");
}
}
work2 실행
work1 실행
모든 작업 종료
'코딩 > JAVA' 카테고리의 다른 글
[4주차 1일] 여러개의 클래스로부터 값 받기 (0) | 2023.10.30 |
---|---|
[3주차 5일] Chapter 10. 기본 API 클래스 알아보기 (0) | 2023.10.27 |
[3주차 3일] Chapter 10. 기본 API 클래스 알아보기 (0) | 2023.10.25 |
[3주차 2일] Chapter 9. 예외처리 (0) | 2023.10.24 |
[3주차 2일] Chapter 8. 추상 클래스와 인터페이스 내부 클래스 (0) | 2023.10.24 |
- Total
- Today
- Yesterday