본문 바로가기
국비지원/JAVA

[JAVA] 2-4. 연산자 Operator / 2항연산자 / 3항연산자

by cosmog 2022. 9. 22.
반응형
연산자

1. 단항 연산자

  • 부호연산자(양수, 음수) +, -
  • ++,-- 나자신을 +1, -1
    • int a = 10;
    • a++; // a는 11이된다.
    • a--; // a는 10이 된다.

a++ 과 ++a의 차이.
먼저 연산후 증가. a++ 증가 후 연산 ++a

  • ~ 2진수 값을 반대로 바꿔주는 것.(거의 안씀)
  • ! 반대의 의미 (부정의미) true, false 키워드 앞에 붙는다.
    • !true는 false를 의미한다.
  • casting(type)
public class OperatorEx01 {
	public static void main(String[] args) {
		
		//단항 연산자
		int i = -3;
		int j = -i;
		System.out.println("j:" + j);
		
		//++, --
		int k = 1;
		k++;
		System.out.println("k:"+ k);
		k--;
		System.out.println("k:"+ k);
		
		//증감연산자는 a++, ++a 의미가 조금 다르다.
		k = 1;
		int h = k++; // 먼저 대입, 이후에 증가.
		System.out.println("k:" + k);
		System.out.println("h:" + h);
		
		k = 1;
		int g = ++k; // 먼저 증가, 후에 대입.
		System.out.println("k:" + k);
		System.out.println("g:" + g);
		
		k=1;
		System.out.println(k++);//1출력 후 2되었다.
		System.out.println(++k);//2+1 = 3되고 출력.
		
		System.out.println("--------------------");
		
		//~ 연산자 - 2진수값을 반대로 (쓸일은 없음)
		byte b = 10; // 0000 1010
		System.out.println(~b); // 1111 0101
		System.out.println(~b +1); //-10 보수관계이다.(특징)
		
		System.out.println("--------------------");
		
		System.out.println(!true); //false
		
		boolean bool = !false;
		System.out.println(bool); // true
		
	}

}
결과값
j:3
k:2
k:1
k:2
h:1
k:2
g:2
1
3
--------------------
-11
-10
--------------------
false
true

2. 2항 연산자

산술 연산자

+ 더하기/ - 빼기/ * 곱하기/ / 나누기/ % 나머지값

 

비교 연산자

비교해서 boolean형으로 반환.

<, <=, >, >=, ==, !=

/* 연산과 비교연산*/

public class OperatorEx02 {

	public static void main(String[] args) {
		
		//2항 연산자 - 항이 2개인 연산자
		int i = 7 / 3; //몫 2
		int j = 7 % 3; // 나머지 1
		int k = 7 * 3; // 곱 21
		
		//비교연산
		System.out.println(i == j); //f
		System.out.println(i != j); //t
		System.out.println(i >= 1); //t
		System.out.println(i < j); //f
		System.out.println(k != 21); //f
		
		//2의 배수 즉 홀수 짝수 배수 구분할때 많이 사용하는 구문~
		System.out.println(k % 2 != 0); //t
		System.out.println(k % 2 == 0); //f
		System.out.println(k % 7 == 0); //t->7의 배수
		
		
	}
}

비트 연산자

& and

| or

 

논리 연산자 ⭐

&, |, &&, ||

& and (양쪽 결과가 같아야 true)
     true & true = true
     true & false = false
     false & false = false
| or (둘 중에 하나만 true여도 true)
     true & true = true
     true & false = true
     flase & flase = false

 

빠른연산자

&& 
flase && 뒤에를 확인하지 않고 좀더 빠른 연산 가능하다. 무조건 ||
||
true || 뒤에를 확인하지 않고 좀더 빠른 연산 가능 무조건 true 

public class OperatorEx03 {

	public static void main(String[] args) {
		
		int x = 10;
		int y = 20;
		
		//if 뒤에는 조건이 온다. true라면 if문 실행 false라면 else문 실행.
		//&&, ||는 앞항을 검사해서 결과가 정해지면, 뒤를 실행하지 않는다.
		if(x != 10 && ++y == 21) {
			System.out.println("참 입니다.");
		} else {
			System.out.println("거짓 입니다.");
		}
		
		System.out.println("x:" + x + " y:" + y);

		if(x == 10 || ++y == 21) {
			System.out.println("참 입니다.");
		} else {
			System.out.println("거짓 입니다");
		}
		
		System.out.println("x:" + x + " y:" + y);
		
	}
}

빠른연산자 사용할 경우 조건문에 ++이 있다면 실행이 안되고 넘어갈수도 있기때문에 결과값이 달라질수가 있다.

 

대입연산자
int a = 1;
a = a + 3; => a += 3; 으로 작성할 수 있다.

+= / -= / *= / /= / %=

public class OperatorEx04 {
	public static void main(String[] args) {
		
		int a = 6;
		int b = 5;
		
		a +=3; // a = a + 3;과 동일한 표현
		b =+ 3; // b = +3;임 주의 연산자 반대로 적으면 안됨.
		System.out.println(a);
		
		a -= 4; //5
		a *= 10; //50
		a /= 3; //16
		a %= 4; //0
		System.out.println(a);
	}
}

 

3항연산자

하나의 문범이다.

조건식 ? 연산식1(조건이 true) : 연산식2(조건이 false)

💡 무진장 많이 나옵니당~

public class OperatorCondition {

	public static void main(String[] args) {
		//프로그램에서 랜덤한 값은 유효한 의미를 가집니다.
		//System.out.println(Math.random()); //0이상~1.0미만 랜덤값 출력
		//유효한 정수 랜덤값 1~10
		int num = (int)(Math.random() * 10) + 1; //1~10까지
		System.out.println(num);
		
		//랜덤값이 3의 배수인지 아닌지를 검사
		String result = num % 3 == 0 ? "3의 배수" : "3의 배수가 아님.";
		System.out.println(result);
		
		System.out.println("------------------------");
		
		/*
		 * 1~100까지 랜덤한 정수를 생성
		 * 짝수 or 홀수 인지 결과를 출력
		 */
		
		int ran_num = (int)(Math.random() * 100) + 1; //1~100까지
		System.out.println(ran_num);
		
		String sniffling = ran_num % 2 == 0 ? "짝수" : "홀수";
		System.out.println(sniffling);
		
		System.out.println("------------------------");
		
		/*
		 * -5~5까지 랜덤한 정수를 생성 (0~10)-10
		 * 어떤 정수가 나오든 절대값으로 출력하세요. (양의 정수로)
		 */
		
		int num2 = (int)(Math.random() * 11) - 5;
        //따로 3항연산자로 하라는 말씀이 없으셔서 그냥 구글에서 찾아서 Math.abs찾아서 사용했었다.
		System.out.println(Math.abs(num2));
        //밑에는 3항연산자로 작성
		System.out.println( num2 > 0 ? num2 : -num2) ;
				
	}
}

🔹 계산순서
- 소괄호 > 단항 > 이항 > 삼항 >대입

주의 a++요런것은 대입보다 더 늦게 제일 마지막이다.

반응형

'국비지원 > JAVA' 카테고리의 다른 글

2-6. Quiz  (0) 2022.09.22
[JAVA] 2-5. 입력받기 (Scanner사용)  (0) 2022.09.22
[JAVA] 2-3. 형변환과 데이터크기 & casting  (0) 2022.09.22
[JAVA] 2-2. 데이터타입  (0) 2022.09.22
[JAVA] 2-1. 변수  (0) 2022.09.22