티스토리 뷰

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 실행
모든 작업 종료
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday