연산자 (Operators)

2023. 11. 21. 16:00
728x90

1. 산술 연산자

: 흔히 하는 사칙연산

+, -, *, /, %

 

- 우선순위는 일반적인 사칙연산.

- 모듈러(%)는 곱셈 나눗셈과 동일.

 

* int/int 정수와 정수는 나누었을 때 나누어 떨어지지 않으면 ?

  : 출력은 나머지를 제외한 몫만 변수에 할당됨. 

int divide = 21/10; // 나누어 떨어지지 않는 정수
System.out.println(divide); //출력 2

double doubleDivide = 21/10;
System.out.println(doubleDivide); //출력 2.0

*  double 변수에 넣으려고 해도, 2.0이 된다. 

* 정수형 변수에 실수형 결과를 넣으려고 하면 오류.

int intResult = 10.1 + 2; //error

 

1) 형변환(Type Casting) 

: 자료형을 변환한다.

 

** 묵시적 (implicit) 형변환 : 일반적으로 더 작은 자료형에서 더 큰 자료형으로 변환될 때 자동으로 변환됨.

- byte -> short -> int -> long -> float -> double

** 명시적 (explicit) 형변환 : 더 큰 자료형에서 작은 자료형으로 변환할 때 수동으로 형 변환. (억지로 더 작은 공간의 자료형으로 옮기기 때문에 데이터 손실이 있을 수 있다.)

- 실수로 결과를 구하려면 연산 전에 피연산자 중 하나를 double로 변환하면 된다.

- char도 실제 메모리상에는 숫자로 저장되기 때문에, int를 비롯한 자료형과 연산이 된다. (char)로 형변환하면 문자로 출력됨.

double doubleVar = 10.24;
int castedDouble = (int) doubleVar;
System.out.println(castedDouble); //출력 10

long bigInt = 4294967296L;
System.out.println((int)bigInt); //출력 0 long을 int로 

double doubleDivide = (double) 21 / 10; //먼저 형변환을 시켜주고 계산
System.out.println(doubleDivide);

int intPlusChar = 10;
char char1 = 65;
char char2 = 10;
System.out.println(intPlusChar + char1);           // 75
System.out.println((char) (intPlusChar + char1));  // K
System.out.println(char1 + char2);                 // 75
System.out.println((char)(char1 + char2));         // K

 

 

2) String 덧셈 (String Concatenation)

- 두 문자열을 더할 경우 두 문자열을 연결하게 된다.

String hello = "HELLO, ";
String world = "World";

System.out.println(hello+world); //출력 HELLO, World

 

3) 증감 연산자

: 대상 피연산자의 값을 1 증가하거나 감소시키는 연산자. 

++ 값 1 증가
-- 값 1 감소

- 반복 작업에서 반복 횟수, 배열 등에서 다음 대상을 나타내는 index, 횟수를 세는 용도 등...~

- 피연산자의 앞에 붙이면 변수의 값을 변화시킨 다음 해당줄의 코드가 실행

- 피연산자의 뒤에 붙이면 해당 줄의 코드가 실행된 다음 값이 변화

int count = 10;
System.out.println(++count);  // 출력: 11 (출력 전에 1 증가, 값: 11)
System.out.println(count++);  // 출력: 11 (출력 후에 1 증가, 값: 12)
System.out.println(--count);  // 출력: 11 (출력 전에 1 감소, 값: 11)
System.out.println(count--);  // 출력: 11 (출력 후에 1 감소, 값: 10)

 

4) 복합 할당 연산자

: 변수에 값을 넣을 때는 할당 연산자를 활용. + 다른 산술 연산자와 조합해서 현재 변수에 할당된 값을 더하거나 뺀 값을 할당시킬 수도 있다. 

- 자기 자신을 활용해서 값을 할당시킬수도 있다. 

= 할당 a = 10;
+= 왼쪽 피연산자에서 오른쪽 피연산자를 더한 값을 왼쪽 피연산자에 할당 a +=10;
a = a+10;
-= 빼기 a -= 10;
a = a-10;
*= 곱하기 a*=10;
a = a*10;
/= 나누기 a /= 10;
a = a/10;
%= 나머지 할당 a %=10;
a = a%10;

 

 

2. 비교 연산자  

1) 비교 연산자

: 관계 연산자. 두 연산자의 대소를 비교하여 boolean을 반환하는 연산

== 같으면 T, 다르면 F
!=  다르면 T, 같으면 F
> 왼쪽이 크면 T
>= 왼쪽이 크거나 같으면 T
< 왼쪽이 작으면 T
<= 왼쪽이 작거나 같으면 T

 

2) 논리 연산자 

: 두 조건(boolean)에 대하여 두 조건의 참-거짓의 조합에 따라 boolean값 반환

- 여러 연산자가 조합되어 있으면 ! -> && -> || 순

&& AND. 왼쪽&오른쪽 모두 T일때 T
|| OR. 왼쪽 오른쪽 둘 중 하나라도 T일때 T
! 피연산자가 T이면 F, F이면 T

 

3) 삼항 연산자 (ternary operator)

: 하나의 조건이 참인지 거짓인지에 따라서 두가지 값 중 하나를 결정하는 연산자.

- 조건 하나와 후보가 되는 값 두개 : 3개의 항.

int temperature = 37;
String message = temperature < 38 ? "OK" : "Feverish";

 

3. 비트 연산자 (bitwise operator)

: 데이터를 비트 단위로 계산하는 연산자. (우리가 사용하는 형태가 아닌 데이터에 저장된 비트를 기준으로 계산)

 

1) AND 연산 (&)

: 피연산자의 각 자리의 비트를 비교. 두 비트가 모두 1이면 비트도 1, 아니면 0

2) OR 연산 (|)

: 피연산자의 각 자리의 비트를 비교. 두 비트 중 하나라도 1이면 1, 아니면 0

3) XOR 연산 (^) (Exclusive OR)

: 피연산자의 각 자리의 비트를 비교. 두 비트가 서로 다르면 1, 서로 같으면 0

4) NOT 연산 (~)

: 피연산자의 각 비트를 반대로 변환

- 0 -> 1, 1-> 0

5) SHIFT 연산 (<<, >>, >>>)

: 비트를 왼쪽 또는 오른쪽으로 이동. 

- 왼쪽 피연산자를 오른쪽 숫자만큼 이동.

- 비트 범위를 넘어가면 버려짐.

- LEFT SHIFT (<<) : 비트를 왼쪽으로 이동. 비어버린 비트는 0으로 채움

- RIGHT SHIFT(>>, >>>) : 비트를 오른쪽으로 이동. 부호의 보존 여부에 따라 다름

 

 

728x90

'Programming > Java' 카테고리의 다른 글

클래스 (Class)  (1) 2023.11.28
메서드 (Methods)  (1) 2023.11.23
제어문 (Control Statements)  (1) 2023.11.22
변수와 자료형 (Variables and Types)  (1) 2023.11.20
자바 개요  (1) 2023.11.20

BELATED ARTICLES

more