연산자(Operator)

woom·2022년 10월 25일
0

JAVA

목록 보기
3/18
post-thumbnail

🌼 연산자(Operator)

  • 계산을 목적으로 제공되는 기호 또는 키워드
  • 피연산자 : 연산자에 의해 계산될 값을 의미
  • 연산자의 종류 : 단항연산자(피연산자 : 1개), 이항연산자(피연산자 : 2개), 삼항연산자(피연산자 : 3개)
    • 일반 연산식은 왼쪽에서 오른쪽으로 처리되지만 단항연산자와 대입연산자는 오른쪽에서 왼쪽으로 처리
      ex) 10+20+30 a=b=c
      ----------> <--------
  • 1의 보수화 : bit not , 2의 보수화 : 부호를 바꾸는 것 (합이 0이 되도록 만듦)

🌻 1. 최우선 연산자

  • 무조건 가장 먼저 처리되는 연산자
    • ( ) : 우선처리 연산자, [ ] : 배열연산자, . : 객체 연산자

🐣 예제

public class OperatorApp {
	public static void main(String[] args) {
		System.out.println("10+20*3="+(10+20*3));
		System.out.println("(10+20)*3="+((10+20)*3));}}
        
        
        

🌻 2. 단항연산자

  • 피연산자의 갯수가 1개인 연산자

  • 단항연산자 종류

  1. + : (플러스)양수화 연산자로 피연산자에 +1을 곱하는 연산자
  2. - : 음수화 연산자(2의 보수 연산자)로 피연산자에 -1을 곱하는 연산자
  3. ~ (틸드) : Bit Not 연산자(1의 보수 연산자). 즉, 정수값으로 표현된 bit값을 반대로 변환
    • 기계 제어하기 위해서 만들어짐 (전기적 신호를 반대방향으로 바꿀때 ex.자동차 전진, 후진)
    • 1의 보수화(bit not시키는 것)는 bit값을 반대로 하는것
    • ex) 50(10) : 00110010(2) 을 1의 보수화 하면 11001101 이 됨
  4. !(느낌표) : Not 연산자로 false 또는 true을 반대로 변환하는 연산자
  5. ++ : 1증가 연산자 - 피연산자가 반드시 변수로 변수값을 1증가 시키는 연산자
  6. -- : 1감소 연산자 - 피연산자가 반드시 변수로 변수값을 1감소 시키는 연산자
  7. (자료형) : 강제 형변환 연산자 - 값의 자료형을 일시적으로 변환하는 연산자
  8. new : 객체 생성 연산자 - 클래스의 생성자를 호출하여 객체를 생성하기 위한 연산자

🐣 예제

public class OperatorApp {
	public static void main(String[] args) {
		int a1=10;
		System.out.println("a1="+a1);
		System.out.println("-a1="+-a1);

		System.out.println("20 > 10 = "+(20>10));
		System.out.println("!(20 > 10) = "+!(20>10));
		
		int a2=10, a3=10;
		System.out.println("a2 = "+a2+", a3 = "+a3);	
		
		//++a2; (저장해라) , a2=a2+1; (더해서 저장해라) 
		//--a3;, a3=a3-1; 도 가능하나 ++,--연산자를 사용하는 이유 : 가독성이 빠르기 때문
		//대부분 연산자 피연산자 순서이나 ++ 연산자 또는 -- 연산자는 피연산자 뒤에 작성 가능
		//연산식으로만 구현된 단일 명령인 경우 연산자의 위치는 연산결과에 미영향	
		a2++;
		a3--;
		System.out.println("a2 = "+a2+", a3 = "+a3);	
		
		//++ 연산자와 -- 연산자로만 구성된 단일 명령이 아닌 경우 
		// 즉, 대입연산자와 같이 사용할 경우 연산자의 위치는 연산 결과에 영향 미침
		int a4=10, a5=10;
		System.out.println("a4="+a4+ ", a5="+a5);
		
		int result1=++a4; //전처리 : ++a4 연산식 실행 후 result1=a4 연산식 실행
		int result2=a5++; //후처리 : result2=a5 연산식 실행 후 a5++ 연산식 실행
		
		System.out.println("a4="+a4+ ", a5="+a5);
		System.out.println("result1="+result1+ ", result2="+result2); }}
        //결과 : result1=11, result2=10 
    
    
    

🌻 3. 이항연산자

  • 피연산자의 갯수가 2개인 연산자

    1. 산술 연산자, 2. 이동 연산자, 3. 비교 연산자, 4. 논리 연산자, 5. 대입 연산자

📙 1. 산술연산자

  • * (곱), / (나누기), + (합or문자열 결합), - (차), % (나머지)

🐣 예제

public class OperatorApp {
	public static void main(String[] args) {
 		int b1=20, b2=10;
		System.out.println(b1+"*"+b2+"="+(b1*b2));
		System.out.println(b1+"/"+b2+"="+(b1/b2));
		System.out.println(b1+"+"+b2+"="+(b1+b2));
		System.out.println(b1+"-"+b2+"="+(b1-b2));
		System.out.println(b1+"%"+b2+"="+(b1%b2)); }}
   
   
   

📙 2. 이동연산자

  • 정수값을 원하는 방향으로 Bit 수만큼 이동하는 연산자
  • 원하는 값만 필터링 하기 위해 사용 ex) 1byte, 2byte중에서 2byte쪽에만 있는것 사용 원해
  • ex) << 왼쪽 이동 연산자, >> 오른쪽 이동 연산자, >>> 오른쪽 이동 연산자
    • 50(10진수) , 4Byte : 00000000 00000000 00000000 00110010
    • 50<<3 : 00000000 00000000 00000001 10010000 : 400(10) 2의엔승만큼 커짐(50*8)
      → <<3 : 왼쪽 이동 연산자: 왼쪽 3개 없어지고 뒤에 0으로 채워짐
    • 50>>3 : 00000000 00000000 00000000 00000110 : 6(10)
      → >>3 : 오른쪽 3개 없어지고 앞에 부호비트와 같은것 채워짐000
    • -50(10), 4Byte : 11111111 11111111 11111111 11001110
    • -50 >> 3 - 11111111 11111111 11111111 11111001 : -7(10)
    • -50 >>> 3 - 00011111 11111111 11111111 11111001 : 앞쪽 0으로 채워지며 매우 큰 수가 됨

📙 3. 비교(관계) 연산자

  • 값(객체)을 비교하여 false 또는 true 중 하나의 결과를 제공
  • ex) <, >, <=, >=, ==(같다), !=(같지않다), instanceof(객체 비교 연산자)

🐣 예제

public class OperatorApp {
	public static void main(String[] args) {
    	System.out.println("20>10="+(20>10));
		System.out.println("20<10="+(20<10));
		System.out.println("20==10="+(20==10));
		System.out.println("20!=0="+(20!=10)); }}
   
   
   

📙 4. 논리연산자

  • 1) Bit 논리 연산자, 2) 일반 논리 연산자

    • 1) Bit 논리 연산자 : 정수값을 Bit 단위로 계산하기 위한 연산자
      ex) & (논리곱), ^ (배타적 논리합)→캐럿이라고 읽음, | (논리합) →파이프라고 읽음

    • 2) 일반 논리 연산자 : 비교 연산식을 연결하기 위한 연산자
      ex) && (And), || (Or)

🐣 예제

public class OperatorApp {
	public static void main(String[] args) {             
		//int c=20;
		int c=-20;
		System.out.println("c="+c);
		System.out.println("c>=10 && c<=30="+(c>=10 && c<=30));
		System.out.println("c<10 || c>30="+(c<10 || c>30)); }}
 
 
 

📙 5. 대입연산자

  • 왼쪽 피연산자(변수)에 값을 저장하기 위한 연산자로 무조건 마지막에 실행
    • 1) 순수 대입 연산자 : 값을 변수에 저장 ex) = 저장하다
    • 2) 복합 대입 연산자 : 변수값을 계산하여 변수에 저장
      ex) d+=20 : d에다 20을 더해서 저장해라
  • 종류 : *=, /=, %=, +=, -=, <<=, >>=, >>>=, &=, ^=, |=

🐣 예제

public class OperatorApp {
	public static void main(String[] args) {  
		int d=10;
		System.out.println("d="+d); //결과 : 10
		d+=20; //d=d+20; : (정수+정수) 연산시 실수로 형변환 일어남
		System.out.println("d="+d); }} // 결과 : 30    
   
   
   
   

🌻 4. 삼항연산자

  • 피연산자의 갯수가 3개인 연산자
  • 형식 : 조건식?참값:거짓값 (조건식: false 또는 true 중 하나의 결과값을 제공하는 연산식)
  • 조건식의 결과가 true인 경우 참값을 사용하고 false인 경우 거짓값 사용

🐣 예제

public class OperatorApp {
	public static void main(String[] args) {  
 		int e1= 10, e2=20;
		System.out.println("큰 값="+(e1>e2?e1:e2)); //결과 : 20

		//int e3=10;
		int e3=11;
		System.out.println(e3+":"+(e3%2==0?"짝수":"홀수"));}}// : 홀수
   
   
   
   

🎀 연습문제1

public class OperatorApp {
	public static void main(String[] args) {  
    	//1. 가로의 길이가 7이고 세로의 길이가 10인 사각형의 넓이를 계산하여 출력하세요.
		int garo=7, sero=10;
		int nulbe=garo*sero;
		System.out.println("사각형의 넓이="+nulbe);

		//2. 높이가 9이고 밑변의 길이가 7인 삼각형의 넓이를 계산하여 출력하세요.
		int h=9, ul=7;
		double nul=(h*ul)/2.;
		System.out.println("삼각형의 넓이="+nul);

		//3. 10명의 전체 몸무게가 759Kg인 경우 평균 몸무게를 계산하여 출력하세요.
		int n=10, sum=759;
		double ave=(double)sum/n;
		System.out.println("평균몸무게="+ave+"kg");

		//4. 이름이 [홍길동]인 학생이 국어점수 89점, 영어점수 93점, 수학점수 95점을 받은 경우
		//총점과 평균을 계산하여 이름, 총점, 평균을 출력하세요.
		//단, 평균은 소숫점 한자리까지만 출력하고 나머지는 절삭 처리 하세요.
		String name = "홍길동";
		int kor = 89, eng=93, math=95;
		int sum2=kor+eng+math;
		double ave2=sum2/3.0;
		System.out.println("이름="+name+", 총점="+sum2+", 평균="+((int)(ave2*10))/10.);}}
        


🎀 연습문제2

public class OperatorExample {
	public static void main(String[] args) {
		//1. 245678초를 일시분초 형식으로 변환하여 출력하세요.
		int s=245678;
		int day=s/(24*60*60); //하루는 24시간*60분*60초=86400초
		s%=86400; //s=s%86400
		int hour=s/(60*60);
		s%=3600;
		int min=s/60;
		int sec=s%60;
		System.out.println(day+"일"+hour+"시"+min+"분"+sec+"초");

		//2. 한대의 가격이 1억 5천원만인 비행기를 20대 구매할 경우 지불해야될 금액을 출력하세요. 
		//단, 15대 이상 구매할 경우 1대당 25%의 할인율을 적용하여 계산하세요.

		int price=150_000_000, n=20;
		long sum=(long)(n>15?price*0.75:price)*n;
		System.out.println("지불금액="+sum);}}
   
   
   

profile
Study Log 📂

0개의 댓글

관련 채용 정보