Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스프링 mvc1 - 스프링 mvc
- 자바의 정석 기초편 ch14
- 스프링 고급 - 스프링 aop
- 자바의 정석 기초편 ch2
- 스프링 db1 - 스프링과 문제 해결
- 스프링 db2 - 데이터 접근 기술
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch13
- 자바의 정석 기초편 ch1
- 자바의 정석 기초편 ch6
- 자바의 정석 기초편 ch8
- 타임리프 - 기본기능
- 자바의 정석 기초편 ch9
- 2024 정보처리기사 수제비 실기
- 자바의 정석 기초편 ch5
- 스프링 mvc2 - 타임리프
- 게시글 목록 api
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch7
- 2024 정보처리기사 시나공 필기
- jpa 활용2 - api 개발 고급
- 자바의 정석 기초편 ch3
- 자바의 정석 기초편 ch4
- jpa - 객체지향 쿼리 언어
- 스프링 mvc2 - 검증
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch12
- 스프링 mvc2 - 로그인 처리
- @Aspect
- 스프링 입문(무료)
Archives
- Today
- Total
나구리의 개발공부기록
자바의 정석 기초편 ch3 - 5 ~ 8[증감연산자, 부호연산자, 형변환 연산자, 자동 형변환] 본문
유튜브 공부/JAVA의 정석 기초편(유튜브)
자바의 정석 기초편 ch3 - 5 ~ 8[증감연산자, 부호연산자, 형변환 연산자, 자동 형변환]
소소한나구리 2023. 11. 5. 14:361) 증감연산자
- 코드의 식을 간단히 하려고 고안 됨
- 증가 연산자(++) : 피연산자의 값을 1 증가 시킨다
- 감소 연산자(--) : 피연산자의 값을 1 감소 시킨다
- 전위형 : 값이 참조되기 전에 반영
- j = ++i;
- ++i; -> i의 값이 증가
- j = i; -> 증가된 i의 값을 참조하여 대입
- 후위형 : 값이 참조된 후에 반영
- j = i++;
- j = i; -> 먼저 참조하여 대입
- i++; -> 그 후에 i의 값을 증가
- ++i, i++ 이렇게 증감 연산자만 독립적으로 사용된 경우 전위형과 후위형의 차이가 없음
예시
public class ex3_{
public static void main(String[] args) {
int i=5, j=0;
j = i++; // 후위형
System.out.println("j=i++; 실행 후, i=" + i + ", j=" + j);
i=5, j=0;
j = ++i; // 전위형
System.out.println("j=++i; 실행 후, i=" + i + ", j=" + j);
}
}
출력결과
j=i++; 실행 후, i=6, j=5
j=++i; 실행 후, i=6, j=6
2) 부호연산자
(1) 부호연산자
- 단항연산자에 적용(피연산자 1개)
- '-' : 피연산자의 부호를 반대로 변경
- '+' : 사용하지 않음 = 아무런 일도 일어나지 않음..
i = -10;
i = -i;
System.out.println(i); // -(-10)으로 10이 출력됨
3) 형변환
(1) 형변환
- 변수 또는 상수의 타입을 다른 타입으로 변환하는 것
- (타입)피연산자
double d = 85.4;
int score = (int)d; // -> int score = (int)85.4;
int score = 85;
- 주의점 - 변수 d의 값은 여전히 그대로이고 불러온 값(score의 값)만 형변환이 된 것
(2) 형변환 예시
- (char)유니코드 문자표
- 문자에서 숫자로 변환시에도 유니코드 문자표 결과값으로 출력
- '0' -> 48, '2' -> 50
- 'A' -> 65, 'F' -> 70
- 'a' -> 97, 'd' -> 100
- 유니코드문자표는 순차적으로 나열 됨
- 실수 -> 정수 형변환시 소수점은 무조건 버림 처리
(3) 자동 형변환 : 컴파일러가 자동으로 형변환 해줌
- float f = 1234; -> 자동 형변환 적용
- flaot f = (float)1234;
- 실수 = 정수로 타입 불일치이지만 저장 가능함
(4) 에러 발생 -> 수동형변환으로 진행
- int i = 3.14f : 에러 발생, 3.14의 값이 3으로 값손실이 발생하여 자동형변환 안됨
- int i = (int)3.14f; : 수동으로 형변환 하여 소수점의 자리가 모두 버림처리되어 3으로 출력 됨
- 기존의 값을 최대한 보존할 수 있는 타입으로만 자동 형변환이 되며 그 외에는 수동 형변환
- long -> float 형변환이 가능한 이유는 float의 저장 형식때문에 float가 표현할 수 있는 범위가 더 넓음
- long (10의 19제곱) -> float (10의 38제곱)
(5) 예외적 상황
- byte b = 100; -> 자동형변환 OK
- byte타입의 범위(-128 ~ 127)의 값이기 때문에 자동으로 형변환 가능
- int i = 100;
- byte b = i; -> 에러발생
- 위의 상황은 100의 값이 리터럴 이지만, i의 값은 변수이므로 변수에 무슨값이 저장 되어있을지 모르기 때문에 자동형변환 불가
- byte b = (byte)i; // 수동형변환은 가능
- byte b = 1000; -> 에러발생, byte타입의 범위를 넘어감(값손실이 발생할 것이 확실)
- byte b = (byte)1000; // 수동형변환 -> 값손실이 발생하여 -24의 값으로 저장됨(오버플로우 적용)
** 출처 : 남궁성의 정석코딩_자바의정석_기초편 유튜브 강의
'유튜브 공부 > JAVA의 정석 기초편(유튜브)' 카테고리의 다른 글
자바의 정석 기초편 ch3 - 15 ~ 19[논리연산자,논리부정연산자,조건연산자,대입연산자] (0) | 2023.11.05 |
---|---|
자바의 정석 기초편 ch3 - 9 ~ 14[사칙연산자, 산술변환 반올림 Math.round(), 나머지 연산자, 비교연산자, 문자열의 비교] (0) | 2023.11.05 |
자바의 정석 기초편 ch2 - 17, ch3 - 1 ~ 4[타입간의 변환방법, 연산자와 피연산자, 연산자의 우선순위와 결합수칙] (0) | 2023.11.05 |
자바의 정석 기초편 ch2 - 14 ~ 16 [scanner(화면에서입력받기),정수형의오버플로우] (0) | 2023.11.02 |
자바의 정석 기초편 ch2 - 12 ~ 13 [printf를 이용한 출력] (0) | 2023.11.02 |