프로그래밍 언어/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
- 큰 자료형에서 작은 자료형으로 바꾸려면 강제 형변환 필요
- 실수에서 정수로 바꾸는 경우
- 가수부가 떨어져 나가면서 지수부만 남게 됨(올림, 반올림, 버림)
- 컴퓨터는 실수를 정확히 처리할 수 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:" 어떠한 경로든 문자 이름부터 시작(절대경로)
- 드라이브 문자 이름으로 시작하지 않으면 상대경로
- 특수경로
- 현재 폴더를 절대 경로(폴더와 폴더(파일) 사이의 구분자는 역슬래시 사용<\>)
- 현재 폴더를 상대경로로