JAVA day 10

lee·2021년 12월 8일
0

JAVA

목록 보기
10/14

learning

수업내용 링크

저장소 : GitHub Repositories leeconomy1121/java-study

File 클래스

  • file 생성자
    File(String pathname) : 입력한 pathname(파일명 포함) 경로 파일의 객체를 생성한다.
    File(String parent, String child) : parent 디렉토리 경로의 child 파일에 대한 객체를 생성한다.
    File(File parent, String child) : 파일 객체 parent의 child 파일에 대한 객체를 생성한다.
    File(URI url) : uri 경로에 대한 파일 객체를 생성한다.

  • File 메소드
    File getAbsoluteFile() : 파일의 절대 경로를 반환한다.
    String getAbsolutePath() : 파일의 절대 경로를 문자열로 반환한다.
    File getCanonicalFile() : 파일의 정규 경로를 반환한다.
    String getCanonnicalPath() : 파일의 정규 경로를 문자열로 반환한다.

  • 텍스트 파일 읽기
    FileReader : 텍스트 파일에서 한 문자씩 바이트 단위로 읽는다.
    BufferedReader : Buffer를 사용해 한번에 여러글자를 읽을 수 있다. 이 때 입력은 바이트 단위인 FileReader 등을 사용

제네릭(Generics) 클래스

  • 제네릭 클래스 사용법
    클래스명<> : 선언하려는 클래스 옆에 기호 <> 사용, <> 안에 데이터 타입

  • 제네릭 타입
    E - Element
    K - Key
    N - Number
    T - Type
    V - Value
    S,U,V etc. - 2nd, 3rd, 4th types

컬렉션(Collection API)

  • API
    API : Application Programming Interface
    즉 라이브러리(library) 로 프로그램에서 자주 사용되는 클래스 및 인터페이스의 모음이다.

    String, System 등의 클래스도 모두 API에 속하는 클래스들이다.

  • java.lang 패키지
    자바 프로그램의 기본적인 클래스를 담고 있는 패키지이다.

    java.lang 패키지에 있는 클래스와 인터페이스는 import 없이 사용할 수 있다.

    클래스 : 용도
    Object : 자바 클래스의 최상위 클래스로 사용된다.
    System : 표준 입력 장치(키보드)로부터 데이터를 입력받을 때 사용된다.
    Class : 클래스를 메모리로 로딩할 때 사용된다.
    String : 문자열을 저장하고 여러가지 정보를 얻을 때 사용된다.
    StringBuffer, StringBuilder : 문자열을 저장하고 내부 문자열을 조작할 때 사용된다.
    Math : 수학 함수 이용 시 사용된다.
    Wrapper - Byte, short, character,Interger, Float, Double, Boolean, Long :
    기본 타입의 데이터를 갖는 객체를 만들 때 사용된다. (포장 객체)
    문자열을 기본 타입으로 변환할 때 주로 사용된다. (입력값 검사에 주로 이용)

  • java.util 패키지
    자바 프로그램 개발의 조미료 같은 역할을 하는 클래스를 담고 있는 패키지이다. 컬렉션 클래스들이 대부분을 차지하고 있다.

    클래스 : 용도
    Arrays : 배열을 조작(비교, 복사, 정렬, 검색)할 때 사용한다.
    Calendar : 운영체제의 날짜와 시간 정보를 얻을 때 사용한다.
    Date : 날짜와 시간 정보를 저장하는 클래스
    Objects : 객체 비교, 널(null) 여부 등을 조사할 때 사용한다.
    StringTokenizer : 특정 문자로 구분된 문자열을 뽑아낼 때 사용한다.
    Randon : 난수를 얻을 때 사용한다.

  • Wrapper Class란?
    자바 API 클래스 중 하나이다.
    자바의 자료형은 primitive type(기본 타입) 과 reference type(참조 타입)
    기본 타입 : byte, short, char, int, long float, double, boolean
    참조 xkdlq : class, interface ..

    8개의 기본 타입에 해당하는 데이터를 객체로 표현하기 위해 포장해 주는 클래스가 바로 wrapper class(래퍼 클래스)이다.

    예를 들어, 메소드의 파라미터로 객체 타입만 요구될 경우

    기본 타입의 데이터를 먼저 객체로 변환 후 작업을 수행해야한다.
    기본 타입은 값을 갖는 객체인 포장 객체를 생성할 수 있다. (기본 타입의 값을 내부에 두고 포장하기 때문에 '포장 객체'라 칭한다.)

    wrapper class는 각 타입에 해당하는 데이터를 파라미터로 전달받아, 해당 값을 가지는 객체로 만들어준다.

    Wrapper Class 종류

    Wrapper Class 구조

    wrapper class들은 모두 java.lang패키지에 포함되어 제공된다.
    Object 클래스 : 모든 wrapper class의 부모 클래스
    Number 클래스 : 내부적으로 숫자를 다루는 wrapper class들의 부모 클래스

    Boxing & UnBoxing

    Boxing : 기본 타입의 데이터를 -> wrapper class의 인스턴스로 변환하는 과정
        Integer num = new Integer(1);
    UnBoxing : wrapper class의 인스턴스에 저장된 값을 -> 기본 타입의 데이터로 꺼내는 과정
        int n =num.intValue();

  • 테스트 ArrayList

Test class

package arrayList;

import java.util.ArrayList;
import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		ArrayList<Double> numbers = new ArrayList<>();
		// 평균값 구하기
		double total = 0;
		while(true) { // 무한반복
			System.out.println("숫자 또는 'q' 입력 > ");
			String input = scanner.nextLine();
			input = input.trim(); // 공백제거
			// System.out.println(input);
			if(input.equalsIgnoreCase("q")) { // 입력을 q로하면 반복문 종료, equalsIgnoreCase : 대소문자 상관없이 Q도 입력가능
				break;
			}
			try {
				double value = Double.parseDouble(input); // 문자열 => 실수로 변환
				numbers.add(value); // 실수로 변환된 값을 리스트에 입력
				total += value;
			} catch (NumberFormatException e) {
				System.out.println("숫자가 아닙니다.");
				continue;
			}
		}
		scanner.close(); // 스캐너 종료
		System.out.println();
		if (numbers.size() > 0) { // 입력된 숫자가 1개 이상이면 출력
			System.out.println("입력된 숫자 : ");
			for(Double num : numbers) {
				System.out.printf("%.2f\n", num);
			}
			System.out.println("평 균 값 : " + total / numbers.size());
		} else {
			System.out.println("숫자가 입력되지 않음!");
		}
		
	}

}

결과

profile
Hello, world!

0개의 댓글