연산자
연산에 필요한 특수기호
#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