본문 바로가기

JAVA

연산자

연산자

연산에 필요한 특수기호

#01. 대입연산자 (=)

변수에 값이나 다른 연산결과를 대입하기 위해 사용

#02. 사칙연산자 (산술연산자)

덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/, %)

연산결과는 다른 변수에 대입하거나 직접 출력할 수 있다

1) 변수간의 연산결과를 다른 변수에 대입 후 출력

int num1 = 100;
int num2 = 200;
int result = num + num2;
System.out.println(result);

2) 변수간의 연산결과를 직접 출력

int num1 = 100;
int num2 = 200;
System.out.println(num1 - num2);

3) 값들간의 연산결과를 직접 출력

System.out.println(100 * 2);

4) 나눗셈

/연산자

나눗셈의 을 반환한다.

int a = 7;
int b = 3;
System.out.println(a / b); // 2가 출력됨 

%연산자

나눗셈의 나머지만 반환한다.

int a = 7;
int b = 3;
System.out.println(a % b); // 1이 출력됨

문자열의 연산

문자열간에는 덧셈만 가능하고, 모든 내용을 연결하는 결과를 반환한다.

String a = "Hello";
String b = "World";
System,out.println(a + b);  // HelloWorld (띄어쓰기 없음)

공백을 포함한 연산

공백 문자열(띄어쓰기)도 하나의 글자로 취급된다.

String a = "Hello";
String b = "World";
String c = " ";                  //띄어쓰기 한칸
System.out.println(a + c + b);  // Hello World (띄어쓰기 있음)

빈 문자열

아무헌 글자도 포함하지 않는 문자열. 쌍따옴표를 열고 즉시 닫는다.
ex) 로그인 시에 아무헌 값이 입력하지 않고 버튼을 누르면 사용자의 입력값은 빈 문자열로 취급된다.

String a = ""; // 아무런 내용도 포함되지 않음
System.out,println(a);  // 촐력되는 내용 없이 줄바꿈만 수행함

문자열과 다른 데이터 타입간의 덧셈

문자열과 연산되는 모든 변수값은 문자열로 변환되어 퍼리된다. 그 결과 문자열간의 연산으로 취급되어 단순히 연결된 결과값을 반환한다.

int number = 100;
int message = "helloJava";

// "HellowJava" + 100 --> "HellowJava" + "100"으로 처리됨
System.out,println(message + number); // HelloJava100

6) 기본 입출력

괄호안의 내용을 출력하고 줄바꿈 수행하기

println의 ln은 line의 줄임말

System.out.println("j");
System.out.println("a");
System.out.println("v");
System.out.println("a");

출력결과

j
a
v
a

아무런 내용도 출력하지 않고 줄바꿈만 수행

println()에게 출력할 내용을 지정하지 않는다.

System.out,println();

괄호안의 내용을 출력하고 줄바꿈 안하기

println()이 아닌 print() 명령어 사용

System.out.print("j");
System.out.print("a");
System.out.print("v");
System.out.print("a");

출력결과

java

 

예제

MyAge.java

정수형 변수 yy에 현재 년도값을 할당하세요.

정수형 변수 born에 자신이 태어난 년도를 대입하고 이를 활용하여 자신의 나이 myAge를 계산하여 출력하시오.

출력결과
public class MyAge{
    public static void main(String [] args){
        int yy;
        int born;
        int myAge;

        born = 1994;
        yy = 2019;
        myAge = yy - born + 1;  // 2019-1994=25이므로+1하여 자기 나이출력


        System.out.print("나는");
        System.out.print(" ");
        System.out.print(myAge);
        System.out.print("세 입니다");
    }
}

난 26세 입니다.

#03. 단항연산자

어떤 변수가 연산 결과를 다시 자기 스스로에게 덮어 씌우는 경우

int x = 1;
x = x + 2;
System.out.println(x);
출력결과

3

위의 연산식을 축약해서 표현한 형태가 단항연산자

int x = 1;
x += 2;   // x 스스로 2증가한다고 이해.
출력결과

3

2) 단항연산자의 종류

모든 사칙연산자는 단항연산자로 표현 가능하다.

덧셈

int a = 1;
a += 10;
System. out. println(a);
출력결과

11

뺄셈

int b = 10;
b -= 5;
System.out.printin(b);
출력결과

5

곱셈

int c = 5;
c *= 2;
System.out.println(c);
출력결과

10

나눗셈 (몫)

int d = 100;
b /= 2;
System.out.println(d);
출력결과

50

나눗셈 (나머지)

int e = 5;
e %= 2;
System.out.println(e);
출력결과

3

#04. 증감연산자

1) 1에 대한 단항 연산의 또 한번의 축약

어떤 변수에 단항 연산으로 표현되어 계산되는 값이 1인 경우
덧셈과 뺄셈에 한해 다시 한번 축약이 가능하다.

덧셈에 대한 연산식 변화

사칙연산자 표현
int k = 100;
k = k + 1;
단항연산자 표현
int k = 100;
k += 1;
증감연산자 표현
int k = 100;
k++; // k 스스로 1증가

혹은

int k = 100;
++k; // k 스스로 1증가

뺄셈에 대한 연산식 변화

사칙연산자 표현
int k = 100;
k = 1;
단항연사자 표현
int k = 100;
k -= 1;
증감연산자 표현
int k = 100;
k--; // k스스로 1감소

혹은

int k = 100;
--k; // k 스스로 1감소

int x = 1;
int y = 100 + x++; // 100+x를 먼저 계산후 ++는 뒷북이다.
// 결과는 101
int x = 1;  // 위의 계산식과 결과는 같다 101
int y = 100 + x;
x += 1;  
// 결과는 101

int x = 1;
int z = 100 + ++x; // 100 + ++x를 한번에 계산 ++앞북
// 결과는 102

2) 증감연산자의 위치에 따른 차이

증감연산자를 적용한 변수가 단독으로 사용된 경우는 위치에 따른 차이가 없지만 다른 수식에 포함된 경우는 위치에 따라 결과가 달라진다.

전위 증감연산자

++, --가 변수 앞에 적용된 경우.

증감연산자가 적용된 변수를 먼저 계산하고 전체수식을 계산한다. (앞북)

int x = 1;
int y = 100 + ++x;     // x가 먼저 1증가하고 100을 더해 y를 확정한다.
System.out.println("x=" + y);
System.out.println("y=" + y);
출력결과
x=2
y=102

후의 증감연산자

++,--가 변수 뒤에 적용된 경우.

증감연산자가 적용되기 전 상태에서 전체 수식을 계산하여 결과값을 확정한 후 증감연산이 수행된다. (뒷북)

int x = 1;
int y = 100 + x++; // 100+x가 먼저 수행되어 y를 101로 확정한 뒤 x가 1증가한다.
System.out.println("x=" + x);
System.out.println("y=" + y);
출력결과
x=2
y=101

#05. 비교연산자

1) 비교연산자의 종류

수학에서의 부등식에서 사용되는 연산자

연산자 의미
== 같다
!= 다르다
< 작다(미만)
<= 작거나 같다(이하)
> 크다(초과)
>= 크거나 같다(이상)

2) 비교연산자의 결과값

비교연산자는 전체 수식이 성립되는지 아닌지를 판단한다.

그러므로 결과값은 참(true) 혹은 거짓(false)로 형성된다.

int x = 1;
int y = 2;
// 결과값을 다른 변수에 저장 후 출력하는 경우 
boolean a = x == y;
boolean b = x != y;
System.out.println(a);
System.out.println(b);

// 직접 출력하는 경우
System.out.println(x < y);
System.out.println(x <= y);
System.out.println(x > y);
System.out.println(x >= y);
출력결과
false
true
true
true
false
false

#06. 논리연산자

이나 거짓을 판별할 수 있는 변수나 수식끼리 AND(&&)OR(||)연산을 수행하여 논리값 형태의 결과를 만들어 내는 식

중,고등학교 수학 과정에서의 명제단원

1) AND 연산

AND 연산은 모든 값이 true인 경우만 결과값이 true이고 그 외의 경우는 모두 false를 반복한다.

boolean a = true && ture;    // true
boolean b = true && false;   // false
boolean c = false && ture;   // false
boolean d = false && false;  // false

2) OR연산

OR연산은 하나라도 true라면 결과값이 true이고 그 외의 경우에는 false를 반복한다.

boolean a = true || ture;      // true
boolean b = true || false;     // true
boolean c = false || ture;     // true
boolean d = false || false;    // false

3) 비교식과의 연계

비교 연산자도 결과값이 true, false로 반환되므로 비교식들끼리 논리연산을 수행할 수 있다.

int x = 10;
int y = 20;
int z = 30;

boolean a = x < y && y > z;   // true && false --> false
boolean b = x >= y && x < z;  // false && ture --> false
boolean c = z > y && z > x;   // true && true --> true
boolean d = x < y || y > z;   // true || false --> true
boolean e = x >= y || x < z;  // false || true --> true
boolean f = z > y || z > x;   // true || true --> true

MyYear.java

정수형 변수 myAge에 자신의 나이를 할당하고 정수형 변수 yy에는 현재 년도값을 대입하세요.

myAge와 yy값을 활용하여 자신의 나이를 계산하고 이 결과값을 정수형 변수 born에 할당한 후 출력하세요.

public class MyYear{
    public static void main(String [] args){
        int myAge = 26;
        int yy = 2019;

        // 나이를 계산할 때 1이 증가된 상태이므로
        // 현재 년도에서 나이를 빼면 원래 빼야하는 값에서 1을 더 빼는 샘이 된다
        // 그러므로 그 차이를 보정하기 위해 1을 추가로 더해야 한다.
        int born = yy - myAge + 1;
        // 출력 결과를 문장으로 구성하기 위해 덧셈 연산 수행
        System.out.print("나는 " + born + "년도에 태어났습니다.");
    }
}
출력결과

나는 1994년도에 태어났습니다.


MyAgeRange.java

정수형 변수 myAge에 자신의 나이를 할당하고 적절한 연산을 수행한 후 자신의 연령층을 출력하세요.

public class MyAgeRange{
    public static void main(String [] args){
        int myAge = 26;
        System.out.println("나는 " + myAge / 10 * 10 + "대 입니다.");

    }
}
선생님 답안
public class MyAgeRange{
    public static void main(String [] args){
        int myAge = 26;
        int range = 26 / 10 * 10;
        System.out.println("나는 " + range + "대 입니다.");

    }
}
출력결과

나는 20대 입니다.


4) NOT연산

느낌표(!)를 논리값이나 논리값을 저장하고 있는 변수 앞에 적용하여 반대의 결과값을 반환한다.

boolean a = !true;    //false
boolean b = !false    // true
boolean c = !a;       // true
boolean d = !b;       // false
boolean e = !!true;   // true의 반대의 반대값 --> true



#07. 삼항연산자

?:을 사용하여 주어진 식이 참인 경우와 그렇지 않은 경우로 나누어 선택적으로 결과값을 반환한다.

조건식 ? 참인경우 : 거짓인경우

int a = 10;
int b = 5;
int c = a > b ? 1 : 0;  // a > b가 참이므로 c에 1이 대입된다
boolean k = true;
int r = k ? 100 : 0;   // k는 그 자체가 참을 의미하므로 r에는 100이 대입된다.
int s = !k ? 100 : 0;  // !k는 false이므로 s에는 0이 대입된다
int x = 10;
int y = 20;
int z = x > y ? x + y : x - y; // x > y가 거짓임므로 z에는 x - y의 결과값이 대입된다.

BasketCount.java

아래의 코드는 사과를 담는데 필요한 바구니(버켓)의 수를 구하는 코드이다. 하나의 바구니에는 10개의 사과를 담을 수 있다고 한다.
만일 사과의 수가 123개라면 13개의 바구니가 필요할 것이고 사과의 수가 120개라면 12개의 바구니가 필요할 것이다

(1)에 알맞은 코드를 넣으시오.

내 풀이
public class BasketCount{
    public static void main(String [] args){
        int numOfApples = 123;  // 사과의 개수
        int sizeOfBucket = 10;  // 바구니의 크기 (바구니에 담을 수 있는 사과의 개수)
        int numOfBucket =  ( numOfApples % sizeOfBucket ) > 0 ? 13 : 12;   // 모든 사과를 담는데 필요한 바구니의 수
        System.out.println("필요한 바구니의 수 : " + numOfBucket );
    }
}  
강사님 풀이
public class BasketCount{
    public static void main(String [] args){
        int numOfApples = 123;  // 사과의 개수
        int sizeOfBucket = 10;  // 바구니의 크기 (바구니에 담을 수 있는 사과의 개수)
        // 모든 사과를담는데 필요한 바구니의 수
        // -->10으로 나누어 떨어지는 경우 (나머지가 0 )는 10으로 나눈 몫만 취함.
        // -->그렇지 않는 경우는 10으로 나눈 몫에 1을 더해야 한다.
        int numOfBucket =  numOfApples / 10 == 10 ? numOfApples / 10 : numOfApples / 10 + 1;  // 모든 사과를 담는데 필요한 바구니의 수

        // 아래의 표현방법도 가능함
        // int numOfBucket = numOfApples % 10 != 0 ? numOfApples / 10 +1 : numOfApples / 10;

        System.out.println("필요한 바구니의 수 : " + numOfBucket );
    }
}  

출력결과

필요한 바구니의 수 : 13

###MyPrint.java
아래는 변수 num의 값에 따라 '양수', '음수', '0'을 출력하는 코드이다.

삼향연산자를 이용해서 (1),(2)에 공통적으로 들어갈 알맞은 코드를 넣으시오.

내 풀이
public class MyPrint{
    public static void main(String [] args){
        int num = 10;
        System.out.println( num > 0 ? "양수" : "음수" );

        int num2 = -9;
        System.out.println( num < 0 ? "양수" : "음수" );
    }
}
강사님 풀이
public class MyPrint{
    public static void main(String [] args){
        int num = 10;
        System.out.println( num > 0 ? "양수" num < 0 ? "음수" : "0" );

         num = -9;
        // num == 0 ? "0" : ( num > 0 ? "양수" : "음수" );
        System.out.println( num > 0 ? "양수" : num < 0 ? "음수" : "0" );
    }
}
출력결과

양수

음수



#08. 연산자 우선순위

순위 연산자 설명
1 () 괄호
2 !, ++, -- 부정, 증감연산자
3 *, /. % 곱셈, 나눗셈
4 +, -, 덧셈, 뺄셈
5 <, =<, >, >= 크기를 비교하기 위한 비교연산자
6 ==, != 같음을 비교하는 비교연산자
7 && AND를 위한 논리연산자
8 `  
9 =, +=, -=, *=, /=, %= 대입, 단항연산자



서브라임에서 바로 코딩 창 설정

메뉴 Tool-> Build System --> New build System

새로운 창이 뜨면 밑에 내용 입력

{
    "cmd": ["javac", "-encoding", "utf-8", "${file_name}", "&&", "java", "${file_base_name}"],
    "file_regex": "^([^:]+):([0-9]+):.*$",
    "selector": "source.java",
    "shell": true,
    "encoding": "cp949"
}

C:|User|사용자폴더|APPData|Roaming|Sublime Tent 3|Packages||User

->C:|User|사용자폴더|APPData 폴더는 기본적으로 숨김 폴더이므로 직접경로를 입력해서 이동해야 함.
파일이름은 가가자 정함
단 확장자는 파일이름.sublime-build

'JAVA' 카테고리의 다른 글

반복문  (0) 2020.05.18
조건문  (0) 2020.05.18
기본입출력  (0) 2020.05.18
변수  (0) 2020.05.15
자바시작하기  (0) 2020.05.14