[JAVA] 연산자

참고강의:

김영한의 자바 무료 입문 강의 - 코드로 시작하는 Java 첫걸음 10시간 (youtube.com)


산술 연산자

  • +, - , * , / 와 같이 계산을 수행하는 기호
public class Operator1 {
public static void main(String[] args) { 
// 변수 초기화
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);  // 출력: a - b = 3 
// 곱셈
int multi = a * b;
System.out.println("a * b = " + multi);  // 출력: a * b = 10 
// 나눗셈
int div = a / b;
System.out.println("a / b = " + div);  // 출력: a / b = 2 
// 나머지
int mod = a % b;
System.out.println("a % b = " + mod);  // 출력: a % b = 1
    }
}

 

실행결과

a + b = 7 
a - b = 3 
a * b = 10 
a / b = 2 
a % b = 1

 

  • 5 / 2 의 결과는 2.5가 되어야 하지만 결과는 소수점이 제거된 2가 나왔다.
    • 자바에서는 같은 int형 끼리 계산하면 계산 결과도 같은 int형을 사용한다.
  • 또한 10 / 0 과 같이 숫자는 0으로 나눌 수 없다. -> 프로그램 오류

연산자의 종류

  • 산술 연산자: + , - , * , / , % (나머지 연산자) 
  • 증감(증가 및 감소) 연산자: ++ , --
  • 비교 연산자: == , != , > , < , >= , <= 
  • 논리 연산자: &&  (AND), ||  (OR), !  (NOT) 
  • 대입 연산자: = , += , -= , *= , /= , %= 
  • 삼항 연산자: ? :

 

연산자와 피 연산자

10 + 20
A + B
  • 연산자(operator) : 연산기호  ex) + , - ...
  • 피연산자(operand) : 연산 대상 ex) 10, 20 , A, B

 

문자열 더하기

  • 문자열에도 + 연산자를 사용가능하다. 문자열에 + 연산자를 사용하면 두 문자열을 연결할 수 있다.
public class Operator2 {
	public static void main(String[] args) {
		// 문자열과 문자열 더하기
        String s1 = "string1";
		String s2 = "string2";
		String result2 = s1 + s2; 
		System.out.println(result2);
        
        // 문자열과 숫자 더하기
        int num = 20;
		String str = "a + b = "; 
		String result4 = str + num; 
		System.out.println(result4);
   }
}

 

실행결과

string1string2
a + b = 20
  • 자바는 문자열인 String 타입에 다른 타입을 더하는 경우 대상 타입을 문자열로 변경한다.

 

연산자 우선순위

  • 괄호() 가 우선순위가 가장 높고, 마지막의 대입 연산자( = )가 우선순위가 가장 낮다

1.   괄호 ()
2.   단항 연산자 (예: ++ , -- , ! , ~ , new , (type) )
3.   산술 연산자 ( * , / , % 우선, 그 다음에 + , - )
4.   Shift 연산자 ( << , >> , >>> )
5.   비교 연산자 ( < , <= , > , >= , instanceof )
6.   등식 연산자 ( == , != )
7.   비트 연산자 ( & , ^ , | )
8.   논리 연산자 ( && , || )
9.   삼항 연산자 ( ? : )

 

증감 연산자

  • 증가 및 감소 연산자를 줄여서 증감 연산자라고 한다. 이들은 변수의 값을 1만큼 증가시키거나 감소 시킨다.
public class OperatorAdd1 {
	public static void main(String[] args) { 
		int a = 0;
		//증감 연산자
		++a; //a = a + 1
		System.out.println("a = " + a); //1
		++a; //a = a + 1
		System.out.println("a = " + a); //2
    } 
}

 

실행결과

a = 1
a = 2

 

 

  • 값을 하나 감소할 때는 --a 와 같이 표현하면 된다. 이것은 a = a - 1 이 된다.

 

전위, 후위 증감 연산자

public class OperatorAdd2 {
	public static void main(String[] args) { 
		// 전위 증감 연산자 사용 예
		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
    } 
}

 

실행결과

a = 2, b = 2 
a = 2, b = 1

 

ex) ++a 전위 증감 연산자

  • 증감 연산이 먼저 수행된 후 나머지 연산이 수행된다.

 

ex) a++ 후위 증감 연산

  •  다른 연산이 먼저 수행된 후 증감 연산이 수행된다.

 

 

비교 연산자

  • 두 값을 비교하는 데 사용한다.

비교 연산자 종류

  • ==  : 동등성 (equal to) 
  • !=  : 불일치 (not equal to)
  • >   : 크다 (greater than)
  • <   : 작다 (less than)
  • >=  : 크거나 같다 (greater than or equal to)
  • <=  : 작거나 같다 (less than or equal to)

비교 연산자를 사용하면 참( true ) 또는 거짓( false )이라는 결과가 나온다. 참 거짓은 boolean 형을 사용한다.

 

public class Comp1 {
	public static void main(String[] args) { 
		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
    } 
}

 

문자열 비교

  • 문자열이 같은지 비교할 때는 == 이 아니라 .equals() 메서드를 사용해야 한다.
public class Comp2 {
	public static void main(String[] args) { 
        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);
        System.out.println("result2 = " + result2);
        System.out.println("result3 = " + result3);
    } 
}

 

실행결과

result1 = true
result2 = true
result3 = false

 

논리연산자

  • 논리 연산자는 boolean 형인 true , false 를 비교하는데 사용한다.

논리연산자 종류

  • &&  (그리고) : 두 피연산자가 모두 참이면 참을 반환, 둘중 하나라도 거짓이면 거짓을 반환 
  • ||  (또는) : 두 피연산자 중 하나라도 참이면 참을 반환, 둘다 거짓이면 거짓을 반환
  • !  (부정) : 피연산자의 논리적 부정을 반환. 즉, 참이면 거짓을, 거짓이면 참을 반환
public class Logical1 {
	public static void main(String[] args) {
        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
   }
}

 

대입 연산자

  • 대입 연산자( = )는 값을 변수에 할당하는 연산자다.

축약 대입 연산자

  • 산술 연산자와 대입 연산자를 한번에 축약해서 사용할 수 있는데, 이것을 축약(복합) 대입 연산자라 한다. 
  • 연산자 종류: += , -= , *= , /= , %=

ex)

  • i = i + 3  -> i += 3
  • i = i * 4  -> i *= 4
public class Assign1 {
	public static void main(String[] args) { 
		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);
    } 
}

 

실행결과

3

 

'JAVA' 카테고리의 다른 글

[JAVA] 반복문  (2) 2024.01.19
[JAVA] 조건문  (0) 2024.01.17
[JAVA] 변수  (0) 2024.01.15
[JAVA] JAVA란 ?  (0) 2024.01.15