본문 바로가기
프로그래밍 언어/Java 프로그래밍

Java Day2 - 문자, 타입 변환, 표준 입/출력, 파일 입/출력

by Hyeon_ 2021. 11. 2.

문자(문자열)

  • 문자(' '), 문자열(" ")
    • 여러 개의 단일 문자의 집합(문자열)

눈에 보이는 것이 전부는 아님

  • 특히 문자열 뒤에 엔터가 붙는 경우 있음
    • 표준 입력, 파일 입/출력
    • "Hello" VS. "HelloCRLF"
    • "내가 모르는 어떤 문자가 섞여 있을 수 있음을 인지하는 것이 중요
  • 미리 기억해둘 것
    • Enter(CR(0x0d) LF(0x0a))
      • LF(0x0a) 하나로만 표현하는 경우도 있음
    • 공백(0x20), 탭(0x09)
      • 공백도 문자
      • 빈 문자와 공백 문자는 염격히 구분

Java에서의 자료형 표현

// 양수 표현
int basic = 235487;
System.out.println(basic);

// 음수 표현
int minus = -235487;
System.out.println(minus);

// long 타입을 이용하면 최대 8바이트까지 가능
long big = 3247483648L;
System.out.println(big);

// 아스키 값이 같으면, 같은 문자
System.out.println('\\\\' == 0x5c);

// 문자열의 비교는 지원하지 않음
System.out.println("apple".equals("apple")); //의 형식으로 해야 지원
System.out.println("apple".equals("Apple"));

문자열 이스케이프

1. 문자를 사용할 때 충돌이 발생하는 경우

  • 용도가 정해진 문자들이 존재
  • 대표적으로 '(작은따옴표)', "(큰 따옴표)"가 있음. (문자, 문자열)
    • 다른 용도로 사용하고 싶은 경우
  • 탈출(본래 용도가 아닌, 일반적인 )

2. 반대인 경우

  • 특별한 의미가 없는 문자인데, 특별한 의미를 부여해서 사용
  • 엔터를 입력할 수 없음
    • 그래서, 엔터를 대신할만한 문자 만들어 사용 (\n)
// 문자열 이스케이프
// 따옴표를 출력하고 싶은 경우
System.out.println("'Hello, World'");

변수와 상수, 리터럴

상수(Constant)

  • 변하지 않는 수
  • 변수의 상수화
    • 프로그래밍의 본질은 변수를 처리하는 것
    • 결과적으로 메모리에 들어있는 값을 내가 원하는 값으로 바꾸는 과정
  • 메모리에 들어있는 값을 변하기 않게 만들어 주는 것(상수화)

타입 변환

  • 타입이 가지는 가장 중요한 의미는 크기
    • 크기에 따른 문제
    • 작은 자료형에서 큰 자료형으로 바꾸는 것은 문제 X
    • 큰 자료형에서 작은 자료형으로 바꾸려면 강제 형변환 필요
      • float a = 3.141592;
        System.out.println((int)a);
    • 실수에서 정수로 바꾸는 경우
      • 가수부가 떨어져 나가면서 지수부만 남게 됨(올림, 반올림, 버림)
      • 컴퓨터는 실수를 정확히 처리할 수 X
      • 일반반적으로 실수를 근사한 값으로 변경해서 처리
  • 문자 -> 숫자
  • 숫자 -> 문자

표준 입/출력

  • 표준, 파일, 네트워크 통신
    • 표준이라는 이름을 사용(입/출력이 이미 정해져 있음을 의미)
    • 표준 입력장치: 키보드
    • 표준 출력장치: 모니터

표준 출력

  • 표준 출력의 기본 형태는 문자열.
  • println()
    • 한 줄을 출력하기 때문, 라인의 끝에 뉴 라인이 자동으로 출력
  • printf()
    • format string(문자열 꾸미기)
    • 출력할 때 출력 형태를 직접 지정
    • 출력할 문자열을 미리 구성하고, 출력
    • 출력하려는 문자열 내에 %가 붙은 문자를 형식 지정자라고 함
      • boolean 형태: %b
      • 정수 형태: %d(10진수), %x(16진수)
      • 문자 형태: %c
      • 문자열 형태: %s
      • 실수형 형태: %f(부동소수점 형태)

표준 입력

  • Scanner 클래스를 이용하면 제일 쉽게 표준 입력 처리
    • 사용은 쉽지만, 속도가 느리다는 단점
  • InputStream(1바이트 입력)
  • InputStreamReader(1문자 입력)
  • BufferdReader(문자열 입력)

파일 입/출력

  • 파일이 있는 위치를 한 줄의 문자열로 표현
  • 일반적으로 파일의 구조는 계층적 구조로 표현(상, 하위)
  • Windows 기준 최상위 폴더(드라이브 문자 이름/C:, D:, ...)
    • 드라이브 문자 이름 하드 디스크(SSD, HDD, USB, ...)마다 문자 이름 할당
    • "C:" 어떠한 경로든 문자 이름부터 시작(절대경로)
    • 드라이브 문자 이름으로 시작하지 않으면 상대경로
    • 특수경로
      • 현재 폴더: .
      • 상위폴더: ..
  • 현재 폴더를 절대 경로(폴더와 폴더(파일) 사이의 구분자는 역슬래시 사용<\>)
    • 출발지가 항상 일정(최상위 폴더)
  • 현재 폴더를 상대경로로
    • 현재위치(작업폴더)에 따라서 경로 바뀜