상세 컨텐츠

본문 제목

[JAVA 입문 04] - 산술 연산자와 논리 연산자

JAVA

by 코딩순이 2021. 2. 19. 19:20

본문

안녕하세요.

 

순코딩의 코딩순이입니다.

 

오늘은 자바의 기초인 산술 연산자와 논리 연산자에 대해 알아보도록 하겠습니다.

 

▶ 산술 연산자

먼저 산술 연산자에 대해 알아보겠습니다.

산술 연산자
사칙 연산자 + , - , * , / , &(나머지)
복합 연산자 += , -= , *= , /= , %=
증감 연산자 ++ , --

사칙 연산자 예시입니다.

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를 출력함

오늘은 산술 연산자와 논리 연산자에 대해 알아보았습니다.

 

감사합니다.

관련글 더보기