자동 타입 변환
byte + byte = int (자동 타입 변환)
int + int = int
정수 연산 정수 = 정수
자동 타입인지 강제 타입 변환인지 궁금하면 (타입)을 지워봤을 때도 같은 값이 나오면 자동 타입 변환이고 다른 결과가 나온다면 강제 타입 변환이다.
증감연산자 - 전위 연산자 / 후위 연산자
1. 변수와 자료형
- 변수(Variable)
- 하나의 값을 저장하기 위한 메모리 공간
- 변수명 = 할당 받은 메모리 주소 대신 부르는 이름
- 정수, 실수 등 다양한 타입의 값을 저장 가능
- 사용 전 선언 필수
- 자료형(타입)
- 저장할 수 있는 값의 형태를 지정
- 자바 프로그램 내의 모든 변수/상수는 자료형 선언 후 사용 가능
- 변수 선언 및 값 저장
- 변수 초기화 = 변수에 최초로 값이 저장될 때
- 초기값 = 변수 초기화 될 때의 값
- 변수/상수/ 메서드 이름 선정 (필수사항)
- 영어 대소문자만 사용(한글도 가능은 하나, 오류 가능성)
- 특수문자 : **‘_’, ‘$’**만 사용 가능
- 숫자 사용 가능 → 첫 글자는 x
- 자바 키워드 사용 불가
- 변수/ 메서드 이름 선정 (권장사항)
- 변수 이름 소문자로 시작
- 두개 이상의 단어가 결합된 경우 새 단어는 대문자로 시작
- 변수 이름을 정할 때는 의미있는 이름으로
- 예약어(키워드)
- 자바 언어에서 의미를 가지고 사용되는 단어
- 변수 이름으로 사용할 경우 컴파일 에러 발생
- 변수 사용 범위
- 로컬변수
- 변수가 선언된 중괄호 안에서만 사용 가능 {}
- 로컬변수
- [참고] 모니터로 출력하기
- println();
- 괄호 안 출력 + 행 바꾸기
- system.out.println(변수);
- (시스템이 갖고 있는 출력장치로 괄호 안 내용 출력 후 행 바꾸기)
- print();
- 괄호 안 출력
- printf(“형식문자열”, 변수1..);
- 문자열 형식대로 내용 출력
- println();
- [실습] 변수
- [확인문제]
2. 기본 자료형
- 자바 자료형
- 기본 자료형
- 정수 타입 데이터 형식
- 숫자 뒤에 l 또는 L 붙여 Long 타입 표시 (생략 가능)
- 실수 타입 데이터 형식
- double 타입을 기본 실수 타입으로 취급
- 숫자 뒤에 f 또는 F 붙여 float 타입 표시 (강제 타입 변환)
- 문자 타입
- 작은 따옴표 사용
- 유니코드 값 그대로 입력 가능 → (’\u + 16진수 코드’)
- 정수 데이터 또한 직접 할당 가능
- 논리 타입
- True, False 값 저장
- 정수 타입 데이터 형식
- [실습] 정수 타입
- byte는 127까지만 저장 가능. 128부터는 int 값
- [실습] 실수 타입
- [실습] 문자 타입
- [실습] 논리 타입
3. 기본 자료형 간의 타입 변환
- 타입 변환
- 데이터 타입을 다른 데이터 타입으로 변환하는 것
- 숫자를 저장하는 7개(bool 제외) 기본 자료형 사이에 타입 변환 가능
- 자동타입변환 및 수동타입변환
- 자료형의 크기(값의 범위) 순서
- byte < short/char < int < long < float < double
- 데이터 타입을 다른 데이터 타입으로 변환하는 것
- 자동 타입 변환 (promotion)
- 자동 타입 변환
- 값의 허용 범위가 작은 타입 → 큰 타입으로 저장될 경우
- 컴파일러가 자동으로 타입변환 수행 (즉, 타입변환 생략 가능)
- 정수 연산에서의 자동 타입 변환
- byte, char, short 타입 변수는 int 타입으로 자동 변환
- 실수 연산에서의 타입 변환
- 정수 + 연산 + 정수 = 정수
- 자동 타입 변환
-
// 방법 1 int x = 1; int y = 2; double result = (double) x / y; System.out.println(result); // 방법 2 int x = 1; int y = 2; double result = x / (double) y; System.out.println(result); // 방법 3 int x = 1; int y = 2; double result = (double) x / (double) y; System.out.println(result); // 0.5
- int x = 1; int y = 2; double result = x / y; System.out.println(result); // 0.0
- 강제 타입 변환 (casting)
- 큰 허용 범위 타입 —> 작은 허용 범위 타입으로 강제로 저장
- 캐스팅 연산자 괄호 () 사용
- 괄호 안에 변환 타입을 명시
- 값 손실 발생 가능
- 예 ) int → byte 의 경우, int는 4바이트 즉 32비트인데 byte는 1byte로 8비트이므로 하위 8비트만 저장되고 나머지는 손실된다.
- [실습] 강제 타입 변환
- [실습] 연산식에서의 타입 변환
- byte + 연산 + byte = int
- short, char 모두 마찬가지. (오버플로우 방지하기 위해)
- [확인문제]
4. 연산자
- 연산자의 종류
- 피연산자 수에 따라 단항, 이항, 삼항 연산자로 구분
- 단항 연산자 : 부호, 증감 연산자
- 이항 연산자 : 산술, 비교, 논리 연산자
- 삼항 연산자 : 조건 연산자 a > b ? a+1 : b + 1
- 피연산자 수에 따라 단항, 이항, 삼항 연산자로 구분
- 자바 연산자의 종류
- 증감 연산자
- 전위 증감 연산자
- 후위 증감 연산자
- 산술 연산자
- 대입 연산자
- 비교 연산자
- 논리 연산
- 쇼트서킷 (Short circuit)
- 연산 수행 시 결과가 이미 확정된 경우, 나머지 연산 과정을 수행하지 않는 것
- 예) (5 > 3) || (3 < 2) 앞 논리 연산에서 true가 나와, 뒷 연산은 하지 x
- 쇼트서킷 (Short circuit)
- 삼항 연산자
- [실습] 단항 연산자 - 증감 연산자
- 연산의 방향과 우선순위
- 복합적으로 구성된 연산식의 연산
- 우선순위에 따라 수행
- 단항 → 이항 → 삼항
- 산술 → 비교 → 논리 → 대입
- 우선순위가 같을 경우, 왼—> 오 방향으로 수행
- 예외 : 대입 연산자
- 우선순위에 따라 수행
- 복합적으로 구성된 연산식의 연산
- 자바 연산자 우선순위
'전공 테트리스 > 자바 프로그래밍' 카테고리의 다른 글
[자바] 12. 제네릭 (0) | 2024.06.21 |
---|---|
[자바] 11. 기본 API (0) | 2024.06.21 |
[자바] 1. 자바 시작하기 (0) | 2024.04.27 |
[자바 튜터링] 3주차 정올 출력 형성평가 (0) | 2024.04.27 |
[자바 튜터링] 2주차 정올 입력 형성평가 (1) | 2024.04.27 |