처음부터 차근차근

[Java] 연산자 본문

Language/Java

[Java] 연산자

HangJu_95 2023. 12. 14. 22:54
728x90

연산자는 쉬우니 코드를 통해 간단하게 넘어가겠습니다.

자바 연산자 우선순위 암기법

참고 : 연산자 우선순위를 외우려고 하지 마세요. 아무도 외우지 않습니다. 다만, 코드를 작성할 때 주의할 것이 있습니다.

  • 1. 상식선에서 우선순위를 사용하자.
    우리는 덧셈보다 곱센이 우선순위인 것을 기초수학을 통해 배웠습니다. 이런것을 통해 상식선에서 우선순위를 사용하는게 개발자들끼리 코드를 리뷰하는데도 도움이 되고, 알아보기도 수월합니다.
  • 2. 애매하면 괄호()를 사용하자.
    우선순위를 고민할 것 같으면, 괄호를 사용하세요. 괄호는 가장 첫번째 우선순위입니다.
  1. 괄호 ()
  2. 단항 연산자 (예: `++` , `--` , `!` , `~` , `new` , `(type)` )
  3. 산술 연산자( `*` , `/` , `%` 우선, 그 다음에 `+` , `-` )
  4. Shift 연산자( `<<` , `>>` , `>>>` )
  5. 비교 연산자 ( `<` , `<=` , `>` , `>=` , `instanceof` )
  6. 등식 연산자 ( `==` , `!=` )
  7. 비트 연산자 ( `&` , `^` , `|` )
  8. 논리 연산자 ( `&&` , `||` )
  9. 삼항 연산자 ( `? :` )
  10. 대입 연산자 ( `=` , `+=` , `-=` , `*=` , `/=` , `%=` 등등)

산술 연산자

int a = 5;
int b = 2;

// 덧셈
int sum = a + b;
System.out.println("a + b = " +  sum); // 출력 a + b = 7

// 뺄셈
int diff = a - b;
System.out.println("a - b = " + diff);

// 곱셈
int multi = a * b;
System.out.println("a * b = " + multi);

// 나눗셈
// 자바형에서 같은 int형끼리 계산하면 계산결과도 int가 나온다. 소숫점 이하는 포함할 수 없기 때문에
// 이 부분은 뒤에 형변환에서 다룬다.
int div = a / b; // -> 2.5이지만, int 형이기 때문에 2로 출력된다.
System.out.println("a / b = " + div);

// 나머지
// 의외로 잘 쓰이는 연산자. 알고리즘에서
int mod = a % b; // 나머지는 1이 된다.
System.out.println("a % b = " + mod);

// / by zero 에러 출력
// 수학적으로 허용되지 않기 때문에
// int z = 10 / 0;

문자열 더하기

자바는 특별하게 문자열에도 + 연산자를 사용할 수 있습니다. (그건 Javascript도 똑같아..)

// 문자열 더하기
String result1 = "hello" + "world";
System.out.println(result1);

// 문자열 더하기 2
String s1 = "string1";
String s2 = "string2";

String result2 = s1 + s2;
System.out.println(result2);

// 문자열과 숫자열 더하기
String result3 = "a + b = " + 10;
System.out.println(result3);

// 문자열과 숫자열 더하기 2
int num = 20;
String str = "a + b = ";
String result4 = str + num;
System.out.println(result4);

증감 연산자

int a = 0;

// 증가 연산자
++a; // a = a + 1;
System.out.println(a);
// 감소 연산자
--a; // a = a - 1;
System.out.println(a);
// 전위 증감 연산자 사용 예
int a = 1;
int b = 0;
b = ++a; // a의 값을 먼저 증가시키고, 그 결과를 b에 대입
System.out.println("a = " + a + ", b = " + b); // 결과: a = 2, b = 2

// 후위 증감 연산자 사용 예
a = 1; // a 값을 다시 1로 지정
b = 0; // b 값을 다시 0으로 지정
b = a++; // a의 현재 값을 b에 먼저 대입하고, 그 후 a 값을 증가시킴
System.out.println("a = " + a + ", b = " + b); // 결과: a = 2, b = 1

비교 연산자

int a = 2;
int b = 3;
System.out.println(a == b); // false, a와 b는 같지 않다
System.out.println(a != b); // true, a와 b는 다르다
System.out.println(a > b); // false, a는 b보다 크지 않다
System.out.println(a < b); // true, a는 b보다 작다
System.out.println(a >= b); // false, a는 b보다 크거나 같지 않다
System.out.println(a <= b); // true, a는 b보다 작거나 같다
//결과를 boolean 변수에 담기

boolean result = a == b; //a == b: false
System.out.println(result); //false

String 타입은 조금 특이하게 비교 연산자를 .equal 메서드를 사용합니다.

(String 타입은 조금 특이한 타입이기 때문입니다. Javascript 처럼 일치 연산자를 통해 사용하지 않습니다.)

// 문자열은 equals로 비교를 한다.

String str1 = "문자열1";
String str2 = "문자열2";
boolean result1 = "hello".equals("hello"); // 리터럴 비교
boolean result2 = str1.equals("문자열1"); //문자열 변수, 리터럴 비교
boolean result3 = str1.equals(str2); // 문자열 변수 비교

System.out.println("result1 = " + result1); // true
System.out.println("result2 = " + result2); // true
System.out.println("result3 = " + result3); // false

논리 연산자

// && and
// || or
// ! 논리 부정 연산
System.out.println("&&: AND 연산");
System.out.println(true && true); //true
System.out.println(true && false); //false
System.out.println(false && false); //false
System.out.println("||: OR 연산");
System.out.println(true || true); //true
System.out.println(true || false); //true
System.out.println(false || false); //false
System.out.println("! 연산");
System.out.println(!true); //false
System.out.println(!false); //true
System.out.println("변수 활용");
boolean a = true;
boolean b = false;
System.out.println(a && b); // false
System.out.println(a || b); // true
System.out.println(!a); // false
System.out.println(!b); // true
int a = 15;
//a는 10보다 크고 20보다 작다
boolean result = a > 10 && a < 20; //(a > 10) && (a < 20)
System.out.println("result = " + result);
boolean result2 = 10 < a && a < 20; // 이게 더 읽기 쉽다.
System.out.println("result2 = " + result2);

대입 연산자

int a = 5; // 5
a += 3; // 8 (5 + 3): a = a + 3
a -= 2; // 6 (8 - 2): a = a - 2
a *= 4; // 24 (6 * 4): a = a * 4
a /= 3; // 8 (24 / 3): a = a / 3
a %= 5; // 3 (8 % 5) : a = a % 5
System.out.println(a);

참고

김영한의 자바 입문

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

[Java] 형변환  (0) 2023.12.15
[Java] 조건문, 반복문  (0) 2023.12.15
[Java] Java 변수 선언, 데이터 타입  (0) 2023.12.14
[Java] 자바 프로그램 실행해보기  (0) 2023.12.14
[Java] JVM?? JDK?? 용어 정리  (0) 2023.12.14