본문 바로가기
JAVA

[JAVA]연산자

by KhyeonS 2022. 7. 20.

연산자(operator)에 대해 알아보자


연산자(operator)

여러 수식 계산을 위한 도구들이다.

최고 연산자 , . () 
Iteger.parseInt(), 상속(inherrit)에서도 부모를 
parenet.child 식으로 표시
5 * ( 2 + 3 ) 식으로 표시
증감 연산자 ++, -, *, / %(moduler:나머지)
int 10/3   =>3
int 10%3 =>1
시프트 연산자 >>, <<, <=비트에서 맨 첫번째 비트가 1이면 - 부호를 의미한다.
0011 <- <<2 :1100(이동한 뒤 뒤에 00으로 채워지는데 이를 padding이라고 하고, 결과적으로 맨 첫번째 비트가 1이 되므로 -1100의 의미가 되어서 2^2+2^1=6이므로 -6이 되는 결과이므로 주의한다!!
비교 연산자 >(more than), <(less than), >=(more equal), <=(less equal),
==(equal), !=(not equal)
비교 연산자는 if, while,....등에서 조건을 표시할 때 사용된다.
비트연산자 &, |, ^(xor: exclusive(배타적) or), ~(not)
1100 : 1100&1010 => 1000
1010 : 1100 | 1010 => 1110
1000 : 1100 ^ 1010 => 1100 | 0101 => 1101
논리 연산자  &&(and), ||(or), !(not)
논리 연산자도 if, while, ...등에서 여러조건들을 묶어서 조건을 표시할 때 사용된다.
if ( a > 5 && b < 10)
조건 연산자(삼항 연산자) (조건 ? 참_값 :  거짓_값)
if (a>0 ? 10 : 0 ) 
대입 연산자  =(우측 값을 좌측에 대입), *=,  /=,  %=,  +=,  -=
a *= 3 => a = a *  3의 의미 <=계산이 빠르기 때문이다.

산술연산자

산술 연산자 : 4칙 연산과 나머지 값을 구하는 연산자이다.

package java03;


public class Test01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n1, n2;
		n1 = 20;
		n2 = 7;
		int n3 = n1 + n2;
		System.out.println("n3 = "+ n3);
		n3 = n1 - n2;
		System.out.println("n3 = " + n3); //결과 13 
	 	n3 = n1 / n2;
	 	System.out.println("n3 = " + n3); 
	 	double n4 = (double)(n1 / n2);
	 	System.out.println("n4 = " + n4);
	 	double n5 = (double)n1 / (double) n2;
	 	System.out.println("n5 = " + n5);
	 	n3 = n1 % n2;
	 	System.out.println("n3 = " + n3); //결과 6 - 나머지 출력
	}

}


대입연산자

package java03;


public class Test02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n1 = 10, n2 = 7;
		int n3 = n1 + n2;
		System.out.println(" = operator:n1"+ n1 +", n2 "+ n2);
		n3 = 13;
		int n4 = 15;
		System.out.println(" = operator:n3"+ n3 +", n4 "+ n4);
		System.out.println("+= operator: n3 += n4\n"+(n3 += n4));
		int n5 =10, n6 =3;
		System.out.println(" = operator:n5"+ n5 +", n6 "+ n6);
		System.out.println("/= operator: n5 / n6\n"+(n5 /= n6));
		int n7 = 10, n8 =3;
		int n9 = n7 %= n8;
		System.out.println(" = operator:n7"+ n7 +", n8 "+ n2);
		System.out.println("%= operator: n7 / n8\n" + n9);
	
	}

}

 


비교연산자

package java03;

public class Test03 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n1 = 10;
		int n2 =20;
		boolean result; //True/False만 result라는 불리언 변수 선언
		System.out.println("n1 ="+ n1 +"\nn2 =" + n2 );
		result = n1 < n2;
		System.out.println("n1 < n2 : " + result);
		// boolean result = n1 < n2;
		result = n1 == n2;
		System.out.println("n1 == n2 : " + result);
		result = n1 != n2;
		System.out.println("n1 != n2 : " + result);
		
	}

}

 


논리 연산자

package java03;

public class Test04 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int myAge = 30;
		int limit = 35;
		System.out.println("myAge : "+myAge+"\n limit :"+ limit);
		boolean result = ((limit - myAge) >= 5 && myAge > 30); // 둘 다 참일 때 True
		System.out.println("&& 연산 결과: "+result);
		System.out.println("-------------------\n");
		int n1 = 10;
		int n2 = 20;
		boolean result2 = ((n1 += 10) > 20 || (n2 - 10 == 11)); //둘 중 하나만 참일 때도 True
		System.out.println("|| 연산 결과 : "+ result2);
		System.out.println("! 연산 결과 : "+ !result2);
		
	}

}


비트연산자

package java03;

public class Test05 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 10; //1010
		int b = 7; //0111
		int c = a & b; //논리 곱: 두 값이  모두 1일 때만 1, 나머지는 0
		System.out.println("c : "+ c);
		int a2 = 12;
		int b2 = 8;
		int c2 = a2 | b2; // 논리 합: 두 값이 모두 0일 때만 0, 나머지는 1
		System.out.println("c2 :" + c2);
		int a3 = 9;
		int b3 = 11;
		int c3 = a3 ^ b3; //배타적 or (xor): 두 값이 서로 같을 때만 0, 서로 다를 때는 1
		System.out.println("c3 :" + c3);
	}

}


시프트 연산자

package java03;

public class Test06 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 12; // 1100
		int b = 2;
		int c = a >> b; // c =a >> 2 => 0011
		System.out.println("c :"+ c);
		int d = c << b; // d = c << 2 =>1100
		System.out.println("d : "+ d);
		char ch = 'F'; //ASCII 70 => 1000110
		int num = 1;
		char cha_result = (char)(ch >> num); // 0100011 => 35(ASCII코드 값#
		System.out.println("cha_result : "+cha_result);
	}

}

※아스키 코드 참조

 


증감연산자

package java03;

public class Test07 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 10;
		System.out.println("a : " + ++a); //1+10 => 11 
		// 미리 1을 10에 더해서 프린트해서 11이 됨
		int b = 10;
		System.out.println("b : " + b++); //10+1 =>10
		//b까지만 프린트하고 나중에 추가되는 1은 프린트 되지 못해서 10까지만 프린트 됨
		System.out.println("b++ : " + b); //11
		// 이미 b에 1이 추가된 결과를 프린트해서 11이 프린트 됨.
	}

}


 

삼항 연산자

package java03;

public class Test08 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 10;
		int b = 15;
		boolean result1;
		result1 = ++a >= b ? true : false;
		System.out.println("result1 : "+result1);
		System.out.println("-------------------\n");
		int n1 = 10;
		int n2 = 20;
		char result2;
		result2 = ( n1 += n1) == n2 ? 'O' : 'X';
		System.out.println("result2 : " + result2);
		
		
		
	}

}


 

'JAVA' 카테고리의 다른 글

[JAVA] 제어문/배열  (0) 2022.07.21
[JAVA]문제 풀이 1  (0) 2022.07.20
[JAVA]변수 타입2  (0) 2022.07.19
[JAVA] 변수 타입 1  (0) 2022.07.19
[JAVA] 실습 07-19  (0) 2022.07.18

댓글