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 number1, number2; 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개다'Java > Java 수강일지' 카테고리의 다른 글
| [수강일지_11] over load , Exception , File in put, file out put , Calendar ,Date (1) | 2026.05.22 |
|---|---|
| [수강일지_10] function (함수) (0) | 2026.05.21 |
| [수강일지_9] shorting (정렬), function (함수) (0) | 2026.05.20 |
| [수강일지_3] varable (0) | 2026.05.13 |
| [수강일지_2] 프로그램 다뤄보기 도전 (0) | 2026.05.12 |