안녕하세요.
순코딩의 코딩순이입니다.
오늘은 자바의 기초인 산술 연산자와 논리 연산자에 대해 알아보도록 하겠습니다.
먼저 산술 연산자에 대해 알아보겠습니다.
산술 연산자 | |
사칙 연산자 | + , - , * , / , &(나머지) |
복합 연산자 | += , -= , *= , /= , %= |
증감 연산자 | ++ , -- |
사칙 연산자 예시입니다.
int a = 10;
double b = 2.5;
System.out.println(a + b); // 12.5 출력
System.out.println(a - b); // 7.5 출력
System.out.println(a * b); // 25.0 출력
System.out.println(a / b); // 4.0 출력
System.out.println(a % b); // 0.0 출력
복합 연산자 예시입니다.
result += 3; // result = result + 3; 와 같은 코드임.
result -= 5; // result = result - 5; 와 같은 코드임.
result *= 2; // result = result * 2; 와 같은 코드임.
증감 연산자 예시입니다.
int i = 0;
++i; //전위형 : 변수의 값을 읽어오기 전에 1 증가된다.
i++; //후위형 : 변수의 값을 읽어온 후에 1 증가된다.
--i;
i--;
i = 0;
System.out.println("++i = " + ++i); // ++i = 1 출력
i = 0;
System.out.println("i++ = " + i++ ); // i++ = 0 출력하고 i = 1 로 변경됨.
System.out.println(i); // 1 출력
◎ 연산자 주의사항
int _int = 10;
double _double = 3.14;
double result2 = _int + _double; //표현범위가 더 큰 타입으로 형변환된다.
System.out.println(result2); // 13.14 출력
long _long = 100L;
_long = _int + _long; //표현범위가 더 큰 타입으로 형변환된다.
_int = _int + (int)_long; //명시적 형변환 // 110 출력
byte _byte = 5;
short _short = 10;
_int = _byte + _short; //int보다 작은 타입은 int로 형변환된다.
System.out.println(_int); // 15 출력
char _char = 'a'; // 97
char _char2 = 'b'; // 98
_int = _char + + _char2;
System.out.println(_int); // 195 출력
◎ 오버플로우, 언더플로우
//오버플로우
byte c = 127; // -128 ~ 127 범위를 표현함
c++;
System.out.println(c); // byte의 가장 작은 수인 -128을 출력
//언더플로우
c--;
System.out.println(c); // byte의 가장 큰 수인 127을 출력
◎ 예제 - 연산자
//3개의 int형 변수를 선언 및 초기화 후, 합계와 평균을 구해주세요.
int score1 = 15;
int score2 = 34;
int score3 = 49;
int sum = score1 + score2 + score3;
double avg = sum / 3.0;
System.out.println("합계 : " + sum + "점"); // 합계 : 98점 출력
System.out.println("평균 : " + avg + "점"); // 평균 : 32.666666666666664점 출력
◎ 기타
//반올림
avg = Math.round(avg);
System.out.println(avg); // 33.0 출력
avg = Math.round(avg * 100) / 100.0;
System.out.println(avg); // 32.67 출력
// 난수 발생기
Math.random(); // 범위 : 0.0 ~ 1.0 미만
int random = (int)(Math.random() * 100) + 1; // 범위 : 1 ~ 100
System.out.println(random); // 랜덤하게 1 ~ 100 범위에서 한 개의 숫자를 출력
논리 연산자는 다음과 같다.
논리 연산자 | &&(AND), ||(OR) |
논리 연산자의 경우, 피연산자로 boolean만 허용된다.
// &&가 ||보다 실행 우선순위가 높다.
int x = 10;
int y = 20;
boolean b = 0 < x && x < 10 || x < y;
b = !(x < y);
System.out.println(b); // false 출력
왼쪽의 피연산자에게 결과가 정해지면 오른쪽은 수행하지 않는다.
그렇게 때문에 다음과 같은 문제가 발생할 수 있으므로 주의해야한다.
//효율적 연산
b = true && true; //true
b = true && false; //false
b = false && true; //false
b = false && false; //false
b = true || true; //true
b = true || false; //true
b = false || true; //true
b = false || false; //false
//왼쪽의 피연산자에서 결과가 정해지면 오른쪽은 수행하지 않는다.
int a = 10;
b = a < 5 && 0 < a++; // a < 5가 false 이므로 0 < a++;가 실행되지 않고,
System.out.println(a); // a는 그대로 10를 출력함
오늘은 산술 연산자와 논리 연산자에 대해 알아보았습니다.
감사합니다.
[JAVA 입문 06] - 조건문(IF,SWITCH) (0) | 2021.02.22 |
---|---|
[JAVA 입문 01] - JDK 1.7 설치 및 Eclipse(Kepler) 설치 (0) | 2021.02.20 |
[JAVA 입문 05] - 논리 연산자와 비교 연산자 (0) | 2021.02.19 |
[JAVA 입문 03] - 입력과 출력 (0) | 2021.02.18 |
[JAVA 입문 02] - 기본형 타입, 변수 (0) | 2021.02.18 |