Java/Java 수강일지

[수강일지_4] operator(연산자)

jamk-diary 2026. 5. 13. 18:00

2026-05-13


연산자란?

자바에서 operator(연산자)값을 계산하거나 비교하거나 처리할 때 사용하는 기호야!

예를 들어 3 + 5 라는 수식이 있을 때 여기서  사용 된 ' + ' 가 연산자( operator)

 

1.산술 연산자 

 

먼저 숫자 계산을 할 때 사용되는 산술 연산자에 대해 알려줄게!

 

산술 연산자로는  + , - , *  , % , /   가 있어!

 

생소한 기호가 몇 개 보이네! 

먼저 "  /  " 기호는 나누기를 표시해

' % ' 기호는 몫을 나눈 나머지를 표시하지!

 

예시 문제를 보여줄게!

a / b -> 몫 9 / 2-> 4 

a % b -> 나눈 나머지 9 % 2 -> 1

 

이해가 돼? 9를 2로 나눈 몫은 4가 나오고 9를 2로 나눈 몫의 나머지는 1이 나오는 거야!

 

자, 그럼 지금부터 연산자를  활용해 볼게!

 

연산자 활용하기

 

먼저 연산에 사용할 변수를 생성해 볼까?

int number1number2;
int result;

좋아!  우리는 number 1,2 그리고 result 라는 변수 총 3개를 생성해 냈어!

 

이제 number 1, 2에 값을 넣어줘볼게!

number1 = 25;
number2 = 7;

 

좋아 , 이번에도 잘 해냈네! 여기까지 되었다면 result 를 구할 수식을 만들어줘서 변수 result 의 값을 구할 수 있도록 도와줘야겠지? 

result = number1 + number2

 

 

잘했어! 그런 다음 이제  콘솔에서도 확인이 가능하도록 출력해줄 거야!

System.out.println(number1 + " + " + number2 + " = " + result);

 

그럼 콘솔에서는 25 + 7 = 32 라는 출력을 확인할 수가 있을 거야!

이제 이렇게 몇개 더 해 볼까? 

result = number1 - number2;
System.out.println(number1 + " - " + number2 + " = " + result);


result = number1 * number2;
System.out.println(number1 + " * " + number2 + " = " + result);


result = number1 / number2;
System.out.println(number1 + " / " + number2 + " = " + result);


result = number1 % number2;
System.out.println(number1 + " % " + number2 + " = " + result);
------------------------------------------------------------------------------------
25 - 7 = 18
25 * 7 = 175
25 / 7 = 3
25 % 7 = 4

축하해! 이제 산술 연산자의 개념을 익혔어!

자, 이번에는 증감 연산자에 대해 알아보자!


증감연산자

 

<핵심 내용>

  • ++ 와 -- 사용법
  • ++number 와 number++ 의 차이
  • 단독 사용과 대입문에서의 동작 차이

증감연산자의 종류로는 증가자( increment) 와  증감자 ( decrement ) 가 있어!

 

[sample 5] -operator

 

package sample5;
public class mainclass {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/*
		  Operator : 연산자
		  + _ * / %
		 
		  a / b -> 몫				9 / 2-> 4
		  a % b -> 나눈 나머지  9 % 2 -> 1
	
	 string str = "heollo" ; // 한글자당 2바이트 따라서 헬로는 2곱하기 5글자 총 10바이트
		string str = "heollo word" // 빈칸도 바이트 취급 따라서 10글자가 아닌 11글자로 총 22바이트
		char c= 'A'; */
		
		int number1, number2;		// 연산에 사용
		int result;		// 결과값을 저장한다
		
		number1 = 25;
		number2 = 7;
		
		result = number1 + number2;
		System.out.println(number1 + " + " + number2 + " = " + result);
		
		result = number1 - number2;
		System.out.println(number1 + " - " + number2 + " = " + result);
		
		result = number1 * number2;
		System.out.println(number1 + " * " + number2 + " = " + result);
		
		System.out.println(number1+ " - " + number2 + " = " + rsesult);
		System.out.println(number1 + " / " + number2 + " = " + result);
		
		result = number1 % number2;
		System.out.println(number1 + " % " + number2 + " = " + result);
		
		//방법 1  )선언과 동시에 값을 집어 넣는 것
		int number = 0; // 선언 + initialize(초기화)
		
		// 방법 2) 선언 따로 , 값을 따로 집어 넣는 것
	//	int number;  //선언
	//	number=0; //초기화
		
		number = number +1;
		number += 1;
	    System.out.println("number:" + number);		
		
	    // increment(증가자) 는 ++ 로 표시
	    //decrement(증감자) 는 -- 로 표시
	   
	   number++;  //number = number +1과 동일하다
	   ++number; // increment ++표시는 number 앞에 써도 되고 뒤에 써도 된다
	   System.out.println("number:" + number);		
	  
	   number--;  // number = number -1 과 동일하다
	   System.out.println("number:" + number);		
	  
	   //주의점
	   number = 1; //위에 설정한 변수를 다시 초기화 하고 새로 세팅 해 둠
	  
	   int tag;
	//   tag = number++; // 지금 넘버는 1이 나왔는데 넘머 뒤에 ++ 붙여서 같이 연산되게 해 놨음
		/* number 뒤에 ++가 붙은경우 -> 넘버값만 tag에  넣기
		 *  =같다가 아니라 변수 값을 설정해주는 표시이다. tag = number++; 라고 할 때 number = 1 이라는 설정을 통해 number 값을 설정했음으로
	   number는 1이 된다. 그럼 tag = number++; 일 때 tag에 1을 옮겨주고 number(1) ++를 더해줘야 한다 tag 값은 1 , number++ 값은 2다
	 
	   */
	   tag = ++number;//태그랑 넘버랑 같이 사용할 때는 넘버 앞에 ++ 붙이기
	   /*number  앞에 ++가 붙은 경우 -> ++number값을 tag 에 넣기
	    * tag = ++number; 이라고 할 때 number = 1 이라는 설정을 통해 number 값을 설정했음으로 number는 1이 되는 것까지는 동일하다. 다만 ++가 앞에 붙었
	    * 음으로 tag 값에는 ++number 계산 값을 넣어 줘야 한다  따라서 tag와  number 값은 2다
	    */
	   System.out.println("tag:" + tag);
	   System.out.println("number:" + number);
	
	   //연산의 우선순위
	   int a,b,c; //변수 3개가 있다고 선언한 것
	   a = 1;
	   b =2;
	   c=3;
	   result = a+b*c; //만약 +를  먼저 처리 하고 싶다면 (a+b)*c 이렇게 괄호를 사용하면 된다
	   System.out.println(result);
	  
—-----------------------------------------
25 + 7 = 32
25 - 7 = 18
25 * 7 = 175
25 / 7 = 3
25 % 7 = 4
number:2
number:4
number:3
tag:2
number:2
7

 

 

과제 해보기 
package sample0;
import java.util.Scanner;
public class work567 {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in); /*입력을 받고 라는 문장이 있을 경우 콘솔에서 입력을 받을 수 있도록 Scanner sc =new Scanner(System in);
						 						 을 입력해 준다 */
		
		//과제 5: 두수를입력받고사칙연산과%연산까지결과가출력되도록작성하라
		
		int number1, number2;
		int result;
		
		/*변수를 먼저 설정해준다. 입력 받은 수는 계속 바뀔 변동성이 존재하기에 변수로 취급해야 한다. 따라서 int number1, number2 작업을 통해 변수를
		 * 생성하고 변수에 따라 결과도 바뀌기 때문에 결과인 result 도 변수로 취급하여 int result;로 생성해준다. 
		 */
		
		System.out.print("첫번째 수 >");
		number1 = sc.nextInt();
		
		/* 콘솔창에 입력을 할때 목록이 있어야 그 옆에입력을 해야 되는지 알 수 있다. 그래서 System.out.print("첫번째 수 >");로 hello java 처럼 콘솔창에
		 * 출력이 되도록 먼저 목록을 생성해줘야 한다. 그 다음 목록 옆에 변수를 입력 받을 수 있는 창을 만들어 줘야 한다. 변수=스캐너여기입력
		 * 으로 이해했다. 변수(입력받을 수)를 여기에 입력하라는 뜻으로 number1 = sc.nextInt(); 를 설정해준다. 이렇게 되면 콘솔창에서
		 * 첫번째 수 > --(변수 입력 공간) 이렇게 확인 할 수 있다.
		 */
		
		System.out.print("두번째 수 >");
		number2 = sc.nextInt();
		
		result = number1 + number2;
		System.out.println(number1+ " + " + number2 + " = " + result);
		result = number1 - number2;
		System.out.println(number1+ " - " + number2 + " = " + result);
		
		result = number1 * number2;
		System.out.println(number1+ " * " + number2 + " = " + result);
		
		result = number1 / number2;
				System.out.println(number1+ " / " + number2 + " = " + result);
				System.out.println();
		
				
				//과제 6		: 단위 환산 프로그램을 작성하시오.
			
				/* System.out.print("미터 단위로 입력=");
				 * double meter = m = sc.nextInt();
				 * double inch,yard,mile;
				 *
				 * inch = meter *39.97;
				 * yard = meter * 1.094;
				 * mile = meter * 0.00062;
				 *
				 * System.out.print(meter + "미터는" inch + " 인치입니다.");
				 * System.out.print(meter + "미터는" yard + " 야드입니다.");
				 * System.out.print(meter + "미터는" mile + " 마일입니다.");
				 *
				 *
				 * 6.2E-4
				 * 6.2*10^-4
				 * 0.00001
				 *
				 * 10^2->100
				 * 10^-2->0.01
				 */
				int m;
				double res;
				
				System.out.print("m 입력");
				m = sc.nextInt();
				
				res = m * 39.37;
				System.out.println(res + "inch");
				res = m * 1.094;
				System.out.println(res + "yard");
				res = m * 0.00062;
				System.out.println(res + "mile");
				
				System.out.println();
				System.out.println();
				
				
				
	    //과제 7 : qustn xyz를 입력받고 (x-y)/(z-y)연산을 출력하는 프로그램을 작성하라
				/*double x,y,z,
				 * System.out.print("x = ");
				 * x = sc.next double();
				 *
				 * System.out.print("y = ");
				 * y = sc.next double();
				 *
				 * System.out.print("z = ");
				 * z = sc.next double();
				 *
				 * double result = (x-y)/(z-y);
				 * System.out.println("(x-y)/(z-y)=" = result);
				 *
				 *
				 */
				int x, y, z;
				int resultt;
				
				System.out.print("x-");
				x=sc.nextInt();
				
				System.out.print("y-");
				y=sc.nextInt();
				
				System.out.print("z-");
				z=sc.nextInt();
				
				
				
				resultt = (x-y) / (z-y);
				
	
				System.out.println("(" + x + "-" + y + ") / (" + z + "-" + y + ")=" + resultt);


=====================================
첫번째 수 >12
두번째 수 >12
12 + 12 = 24
12 - 12 = 0
12 * 12 = 144
12 / 12 = 1
m 입력13
511.80999999999995inch
14.222000000000001yard
0.00806mile
x-5
y-6
z-8
(5-6) / (8-6)=0

 

sample6-cast
[sample 6]


package sample6;
public class mainclass {
	public static void main(String[] args) {
		/*
		  (자료)형 변환(transform) ㅣ 무조건 숫자로만 변환되는 것들  작은 그릇에 있던 걸 큰 그릇에 넣는 건 문제가 되지 않으나 그 반대는 문제가 생겨서 형 변환을 진행
		
		 < 자료 형의 종류 > 우선순위
		
		 byte  1byte			낮음
		 short 2byte
		 int		4byte
		 long	8byte
		
		 float	4byte
		 double 8byte			높음
		
		<변환의 종류>
		auto; 자동변환 -> 작은 자료형에서 큰 자료형으로 변환할 때
		cast; 강제 변환 -> 큰 자료형에서 작은 자료형으로 변환할 때
	
		 */
		
		
	//auto 변환
		short sh = 30000;
		int number = sh;
		System.out.println(number);
		
		double d;
		d=number;
		System.out.println(d);
		
		long lo = 1234567890;
		float f = lo;  // float의 경우 소수점 자리가 6자리를 넘어가면 에러 발생 그래서1.23456794E9로 표기 된 것임 값이 오류남!	따라서 더블비 써야 함  
		System.out.println(f);
		
		double d1 = lo;
		System.out.println(d1);
		
	
		// 1.23456794E9 ->1.23456794 * 10^9
		//E9는 10^9 = 1000000000
		//E=10 으로 약속 E뒤에 숫자가 오면 ^숫자 해 주기
		
		
		//cast(강제) 변환 -> object
		int number1 = 12345;
		short sh1;
		
		sh1= (short)number1; //넘버값을 강제로 넣게 만듬
		System.out.println(sh1);
	
		int num1,num2;
		num1 = 3;
		num2 = 2;
		
		double result;
		result= (double) num1/num2;
		System.out.println(result);
============================================================
30000
30000.0
1.23456794E9
1.23456789E9
12345
1.5

 

[sample7}- operator2
[sample7}
package sample7;
import java.util.Scanner;
public class mainclass {
public static void main(String[] args) {
			// 논리 operator (true/false)
			/*
			  &&	and		a가 참이고 b 가 참일 때 사용한다
			  ||		or		a 또는 b 가 참일 때 사용한다
			  !		nor		~이 아닐 때 사용한다.
			 
			  위 기호들은 제어문과 같이 사용하는 경우가 더 많다
			  ( lf, while ) 과 많이 사용한다.
			 
			  부등호 > , < , >= , <= , ==(같다) -> 비교 연산자라고 한다
			  *부등호 활용 a>b -> a 가 b 보다 클 때 true
			 */
	
	/*
	 <and 현상>
	 false	false - false (거짓)
	 false true = false (거짓)
	 true false = false
	 true true = true
	*/
	
	int number = 5;  // 지금부터 number 에 5 가 사용될 수 있도록 변수를 생성하고 그 안에 5 값을 정해줬어!
	
	System.out.println(number > 0);
	System.out.println(number <= 5);
	System.out.println(number > 10);
	
	System.out.println(number > 0 && number <= 5);
	System.out.println(number > 5 && number <= 10);
	
	/*
	 * or 연산
	 * false false = false
	 * false true  + true
	 * true false = true
	 * true true
		true =ture
	 */
	
	System.out.println(number > 0 ||  number < 10);
	System.out.println(number < 5 ||  number < 20);
	System.out.println(number <= 0 ||  number  >= 10);
	
	
	/*not
	 *false-> true
	 *true-> false
	*/
	
	
	System.out.println(number ==5);
	System.out.println(number !=5);
	
	System.out.println(!(number > 0  && number <5));
	System.out.println(number <= 0  || number <= 5);
	
	System.out.println(number > 5);
	System.out.println(number <= 5);
	//System.out.println(number !> 5); 이렇게는 불가능
	
	
	System.out.println(number != 5);
	
	//삼항 연산자 ; 굉장히 자주 쓰이는 편
	/* 조건에 따라서 값을 일단을 대입을 할 수 있는 것을 의미한다.
	 *
	 * 형식을 먼저 살펴 보도록 하자
	
	 * 형식 : 결과값 =(조건) ? "값1" : "값2"  -> 조건에 따라서 값을 대입 할 수 있음
	 * 맞으면 값1이 나오게 틀리면 값2가 나오게 해 준다
	 */
	
	//삼항연산자 대입해보기
	char ch; //* char ch; 을 통해 ch라는 변수를 생성했다.
	
	ch = (number >0) ? 'Y' : 'N';
	/*ch 라는 변수의 값을 만들어 줄 거야!
		ch = (number >0) ? 'Y' : 'N';뜻은  (number >0) ? 얘부터 해결해야 돼
		(number >0) ? -> 이전에 설정한 number 라는 변수의 값이 영보다 크다? 맞으면 y 틀리면 n 이 될 거야!
		number의 변수 값은 5로 설정했었고 5는 0보다 크니까 당연히 y 가 되겠지 !
		그래서 ch 변수 안에 우리는 y 라는 답을 저장하게 되었어!            */
	
	System.out.println("ch:" + ch);
	/* 콘솔에 ch:y 가 나타날 수 있게 출력해 볼 거야!
		System.out.println("ch:" + ch);를 통해 출력할 건데 "ch"는 단순 문자 취급으로 그대로 출력이 돼!
	   char ch; 을 통해 ch라는 변수를 생성했었지?
	   그래서 콘솔에서 ch;y 가 나타나게 된 거야!  */
	
	
	int num;
	num = (number == 10) ? 1 : 2;
	System.out.println("num:" + num);
	
	String answer;
	answer = (number >= 5) ? "5보다 크거나 같다" : "5보다 작다";	
	System.out.println(answer);
	
	//편의점에서 거스름돈을 계산한다고 가정해보자!
	/*
	 총액 6250 -> 물건값이야 price 라고 하자
	
	 10000원을 지불했다고 할 때 -> 내돈이야 my money
	 	
	 거스름돈 -> 3750원을 받아야 돼! 과연 지폐와 동전을 몇개씩 받아야 될까?
	
	 1000원은 3장      3750원을 1000으로 나눠줄거야. 3250/1000 이 되겠지!
	 500원은 0개		 3750 % 1000 / 500 -> 0 : 앞자리 큰 3000을 없애주기 위해서 1000으로 나누고 500원 갯수를 구하기 위해서
	 													나머지 750을 500으로 나눴어!
	 100원은 2개		3250% 500/100 -> 2
	 50원은 1개		3250% 100/50 -> 1
	 10원은 0개가 될 거야  3250%50 / 10 -> 0	
	
	 */
	Scanner sc = new Scanner(System.in);  //스캐너 만들어주기
	
	//변수 설정하기!
	int price;  //물건값
	int money;  //지불한 돈
	int re;  //거스름 돈
	int result;  //잔돈갯수계산한 결과
	
	System.out.print("물건값:"); // 콘솔에 입력창 [물건값:] 생성해주기
	price = sc.nextInt(); // 물건값(변수)=콘솔에입력받을 수 있게 [변수 입력창] 생성해주기
	
	System.out.print("지불한 돈:"); //콘솔에 입력창 [지불한 :]생성해주기
	money = sc.nextInt(); //지불한 돈 (변수) =콘솔에 입력받을 수 있게 [변수 입력창] 생성해주기
	
	re = money - price; //콘솔에 입력창 [거스름 돈:] 생성해주기 거스름돈은 지불한 돈 - 물건값이니까 수식으로 거스름돈 변수를 완성해주자!
	System.out.println("거스름돈:" + re); //거스름 돈 (변수)가 콘솔에 계산되어서 출력되었어!
	
	
	result = re / 1000; 		// 변수값(result)를
	System.out.println("1000원은" + result + "장이다" );
	
	result = re % 1000/500;
	System.out.println("500원은" + result + "개다" );
	
	result = re % 500/100;
	System.out.println("100원은" + result + "개다");
	
	result = re %100/50;
	System.out.println("50원은 " + result + "개다");
	
	result = re % 50/10;
	System.out.println("10원은" + result + "개다");
	
==============================================
true
true
false
true
false
true
true
false
true
false
true
true
false
true
false
ch:Y
num:2
5보다 크거나 같다
물건값:6750
지불한 돈:10000
거스름돈:3250
1000원은3장이다
500원은0개다
100원은2개다
50원은 1개다
10원은0개다