연산자
연산자 (operator)
연산자
연산자의 종류는 다음과 같습니다.
산술연산자.
대입 연산자
연산후 대입 연산자
증가/감소 연산자
관계 연산자
비트,시프트 연산자
논리연산자
삼항 연산자.
예제를 보며 아래와 같이 함께 보도록하겠습니다.
산술(수치) 연산자 : +, -, *, /, %
- 정수/정수 = 정수
- float n = 0.0f; f를 제거하면 double 8바이트가 됩니다.
Arithmetic.java
public class Arithmetic {
public static void main(String args[]) {
int i = 20;
int j = 12;
>
int a = i + j;
int b = i - j;
int c = i * j;
int d = i / j;
int e = i % j;
float n = 0.0f;
System.out.println("i : " + i + "j : " + j);
System.out.println("덧셈 결과 : " + a);
System.out.println("뺄셈 결과 : " + b);
System.out.println("곱셈 결과 : " + c);
System.out.println("나눗셈 결과 : " + d);
System.out.println("나머지 결과 : " + e);
n = i/j;
System.out.println("정수/정수의 결과:" + n);
}
}
대입 연산자 : =
- 좌변은 상수값이 아니라 기억장소가 와야합니다.
ⓐ a = i + j;
ⓑ b = 10 + 20;
ⓒ 100 = i + 10; //ERROR
연산후대입 연산자 : +=, -=, *=, /=, %=
- 처리속도 향상
Operator.java
public class Operator {
public static void main(String[] args) {
int i = 10;
int j = 20;
i += j; // i = i + j; i = 10 + 20
System.out.println("i += j: " + i); //30
i -= j; // i = i - j; i = 30 - 10
System.out.println("i -= j: " + i); //10
}
}
증가/감소 연산자 : ++, --
- 알아보기 쉽게 코딩하는 것이 필요합니다.
IncDec.java
public class IncDec {
public static void main(String[] args) {
long i = 0;
long hap = 0;
//hap = ++i; // i 변수의 값을 1증가시켜 hap에 할당, 전위 연산자
//hap = i; // i 변수의 값을 1증가시켜 hap에 할당
//hap = i++; // hap에 i변수의 값을 주고 i 변수의 값을 1증가, 후위 연산자
//i++; // ++i //i = i+1;
//hap = i;
//hap = ++hap + ++i; //권장 아님
System.out.println("hap: " + hap + " i: " + i);
}
}
관계(비교) 연산자 : <, <=, >=, >, ==, !=, instanceof
Compare.java
public class Compare {
public static void main(String args[]) {
int i = 5;
int j = 10;
int k = 15;
System.out.println("5 == 10 : " + (i == j)); // false
System.out.println("5 != 15 : " + (i != k)); // true
System.out.println("10 < 15 : " + (j < k));
System.out.println("k>i : " + (k > i));
System.out.println("i<=k : " + (i <= k));
System.out.println("i>=j : " + (i >= j));
//연산 순서: () ---> 산술 연산자 --> 관계 연산자
System.out.println("10 + 5 * 20 + 10 : " + (10 + 5 < 20 + 10));
}
}
비트연산자(&,|,^,~)와 시프트 연산자(>>,<<,>>>)
십진수를 2진수로 변환할때 가중치를 이용하면 편리합니다
4는 2의 보수를 이용합니다. 2의 보수는 1의 보수를 구한후 1을 더합니다.
128 64 32 16 8 4 2 1 ---> 가중치
- : 지정된 수가 양수이면 0, 음수이면 1로 채워집니다., 2로 나눈 결과와 같습니다.
- <<: 무조건 0으로 채워집니다., 2로 곱합 결과와 같습니다.
- : 무조건 0으로 채워서 양수 처리합니다.
Bitwise.java
class Bitwise {
public static void main(String args[]) {
int a = 2;
int b = 5;
int c = a | b; //2진수 bit or
// ....8421 ----->가중치
// 00000010
//+00000101
//---------
// 00000111--> 7
int d = a & b; //and
// 00000010
//+00000101
//---------
// 00000000--> 0
int e = a ^ b; //Exclusive or
// 00000010
//+00000101
//---------
// 00000111--> 7
int i; int j;
i = a << 2; //좌 shift 연산, 2를 2번 곱합
// ....8421
// 00000010
// 00001000 --> 8
j = b >> 2; //우 shift 연산. 2로 2번 나눔
// ....8421
// 00000101
// 00000001 --> 1
System.out.println(" a = " + a);
System.out.println(" b = " + b);
System.out.println(" a|b = " + c);
System.out.println(" a&b = " + d);
System.out.println(" a^b = " + e);
System.out.println(" a<<2 = " + i);
System.out.println(" b>>2 = " + j);
}
}
package datatype;
class aa {
public static void main(String args[]) {
int temp; // 계산 결과를 담기 위한 변수
System.out.println(-8);
System.out.println(Integer.toBinaryString(-8)); // -8을 2진수 문자열로 변경한다.
System.out.println(); // 줄바꿈을 한다.
temp = -8 << 1;
System.out.println( "-8 << 1 = " + temp);
System.out.println(Integer.toBinaryString(temp));
System.out.println();
temp = -8 << 2;
System.out.println( "-8 << 2 = " + temp);
System.out.println(Integer.toBinaryString(temp));
System.out.println();
System.out.println();
System.out.println(-8);
System.out.println(Integer.toBinaryString(-8));
System.out.println();
temp = -8 >> 1;
System.out.println( "-8 >> 1 = " + temp);
System.out.println(Integer.toBinaryString(temp));
System.out.println();
temp = -8 >> 2;
System.out.println( "-8 >> 2 = " + temp);
System.out.println(Integer.toBinaryString(temp));
System.out.println();
System.out.println();
System.out.println(-8);
System.out.println(Integer.toBinaryString(-8));
System.out.println();
temp = -8 >>> 1;
System.out.println( "-8 >>> 1 = " + temp);
System.out.println(Integer.toBinaryString(temp));
System.out.println();
temp = -8 >>> 2;
System.out.println( "-8 >>> 2 = " + temp);
System.out.println(Integer.toBinaryString(temp));
System.out.println();
}
}
논리연산자(조건 연산자, Short Circuit)
- 조건문과 함께 많이 사용됨
- &&: 양쪽의 조건이 전부 맞아야 참입니다.
- ||: 어느 한쪽만 참이면 참입니다.
삼항 연산자
Ternary.java
class Ternary
{
public static void main(String args[]) {
int x = 10;
int y;
//System.out.println("결과는 " + y);
//System.out.println("초기화되지 않은 y의 값: " + y);
//y = 조건문 ? 참값 : 거짓값
y = x < 9 ? 3 : 5;
System.out.println("결과는 " + y);
}
}
Last updated