- 정수 연산 : 더하기(+), 빼기(-), 곱하기(*), 몫(/), 나머지(%)
- 실수 연산 : 더하기(+), 빼기(-), 곱하기(*), 몫(/), 나머지(%)
- 주로 몫과 나머지를 이용한 연산이 많이 활용된다.
- 25의 앞자리와 뒷자리 분리
- 짝수와 홀수
- ~의 배수
- 0~6 사이 값 사용
25의 앞자리와 뒷자리 분리
public class Abstract25{
public static void main(String[] args) {
int a = 25;
int result1;
int result2;
result1 = a / 10; //2
result2 = a % 10; //5
}
}
짝수와 홀수( 25, 34, 50이 짝수인지 홀수인지 구하시오.)
public class EvenOddNumber {
public static void main(String[] args) {
int x = 25;
int y = 34;
int z = 50;
boolean xResult = (x % 2) = 0; //false, 홀수
int yResult = (y % 2) = 0; //true, 짝수
int zResult = (z % 2) = 0; //true, 짝수
System.out.println("xResult : " + xResult);
System.out.println("yResult : " + yResult);
System.out.println("zResult : " + zResult);
}
}
xResult는 2로 나누었을때 나머지가 0이 아니어서 false이므로 홀수이고,
yResult와 zResult는 2로 나누었을때 나머지가 0이라서 true이므로 짝수이다.
문자열 연결 연산자(+)
- 대입 연산 : 등호(=), 오른쪽의 값을 왼쪽으로 대입함.
- 복합 대입 연산 : 더하기(+=), 빼기(-=), 곱하기(*=), 나누기(/=), 나머지(%=) 등
대입 연산의 형식 :
a = 10 → 10을 a에 대입
10 = a → a를 10에 대입(불가능)
복합 대입 연산의 형식 :
x에 10이있고, y에 20이 있을 때, x와 y에 저장된 값을 서로 교환하시오. (Hint : int temp;)
piblic class ChangeXY {
public static void main(String[] args) {
int a = 10;
int b = 20;
int temp = x;
x = y;
y = temp;
System.out.println(x); // 20
System.out.println(y); // 10
}
}
잔액(balance)에서 이자 5%를 받았음을 나타내자.
piblic class Balance5 {
public static void main(String[] args) {
long balance = 10000;
balance *= 1.05; //balance를 double로 promotion해서 처리한다. (실수 > 정수)
System.out.println(balance); // 10500
}
}
- 증가연산 (++), 1 증가
- 감소연산 (--), 1 감소
- 전위연산(prefix)와 후위연산(postfix)로 구분함
전위연산
변수 a의 값을 연산 전에 1 증가시키고 사용한다.
piblic class Prefix {
public static void main(String[] args) {
int a = 1;
int b = ++a;
System.out.println(a); //2
System.out.println(b); //2
}
}
후위연산
변수 x의 값을 사용하고나서 1 증가시킨다.
piblic class Postfix {
public static void main(String[] args) {
int x = 1;
int y = x++;
System.out.println(x); //2
System.out.println(y); //1
}
}
응용
전위연산(prefix) + 후위연산(postfix)
int i = 1; , int j = 1; 일때, i++ + --j 값을 구하시오.
piblic class PrefixPostfix {
public static void main(String[] args) {
int i = 1;
int j = 1;
int result = i++ + --j;
System.out.println(i); // 2
System.out.println(j); // 0
System.out.println(result); // (1 + 0) = 1
}
}
i++는 후위 연산자 이므로 연산할 당시에는 1로 연산을 수행한다.
초과(>), 미만(<), 이상(>=), 이하(<=), 같다(==), 다르다(!=)
- 연산의 결과는 Boolean (true, false)
piblic class CompareAB {
public static void main(String[] args) {
int a = 7;
int b = 2;
boolean result1 = a > b; // true
boolean result2 = a < b; // true
boolean result3 = a >= b; // true
boolean result4 = a <= b; // true
boolean result5 = a == b; // true
boolean result6 = a != b; // true
}
}
논리 AND : &&, 모두 true이면 true / 하나라도 false이면 false 논리 OR : ||, 하나라도 true이면 true / 모두 false이면 false 논리 NOT : !, true이면 false / false이면 true
piblic class Logic {
public static void main(String[] args) {
//AND, OR
int a = 10;
int b = 10;
boolean result1 = (a == 10) && (b == 10); //true
boolean result2 = (a == 10) || (b == 10); //true
boolean result3 = (a == 10) && (b == 20); //false
boolean result4 = (a == 10) || (b == 20); // true
//NOT
int c = 10;
boolean result5 = !(c == 10); //false
boolean result6 = !(c == 20); //true
}
}
변수 n에 10증가시킨 뒤 100보다 크다면 true, 아니면 false. ( n = 95 )
piblic class LogicExample1 {
public static void main(String[] args) {
int n = 95;
boolean result = (n += 10 ) > 100;
System.out.println(n); //
System.out.println(result)
//주의할 점 : +를 하면 result 결과는 true 일 수 있지만,
//대입연산자로 연산을 한게 아니라서 n을 도출 했을 때는 95의 결과를 얻을 수 있다.
}
}
변수 x를 1증가시킨 뒤 x가 10과 같으면 true, 아니면 false. ( x = 9 )
piblic class LogicExample2 {
public static void main(String[] args) {
int x = 9;
boolean result = ++x == 10;
System.out.println(x);
System.out.prinln(result);
}
}
논리 AND : false가 발생하면 더 이상 진행하지 않는다. 최종 결과는 false이므로.
논리 OR : true가 발생하면 더 이상 진행하지 않는다. 최종결과는 true이므로.
piblic class ShortCircuitEvaluation {
public static void main(String[] args) {
int i = 10;
int j = 10;
boolean result9 = (i == 20) && (++j == 11);
System.out.println(result9); //false
System.out.println(j); //11이 아니라 10이 나왔다.
// 앞의 조건이 false가 발생하여 뒤의 ++j연산은 진행하지 않았다.
boolean result10 = (i == 10) || (++j == 11);
System.out.println(result10);
System.out.println(j); //11이 아니라 10이 나왔다.
// 앞의 조건이 true가 발생하여 뒤의 ++j연산은 진행하지 않는다.
}
}
조건을 만족하는 경우와 그렇지 않은 경우 모두를 처리하는 연산
형식
조건 ? 만족하는경우 : 만족하지 않는 경우
점수가 60점 이상일 경우 합격, 그렇지 않으면 불합격.
public class Conditon {
public static void main(String[] args) {
int score = 100;
String result = (score >= 60) ? "합격" : "불합격"; //합격
System.out.println(result);
}
}
이렇게 조건과 물음표 뒤에 올때 true일 경우 바로 앞의 문장이 출력되고, 그렇지 않으면 콜론(:)뒤의 문장이 출력된다.
순위가 1이면 "금메달", 순위가 2이면 "은메달", 순위가 3이면 "동메달, 나머지 순위는 "없음".
public class Medal {
public static void main(String[] args) {
int rank = 1;
String medal = (rank == 1) ? "금메달" : (rank == 2) ? "은메달" : (rank == 3) ? "동메달" : "없음";
System.out.println(medal);
}
}
주민등록번호 뒷 7자리 중 첫 번째 숫자가 1, 3, 5이면 "남자", 2, 4, 6이면 "여자"를 출력하시오.
public class Medal {
public static void main(String[] args) {
int serial = 2234567;
String gender = (serial / 1000000) % 2 == 1 ? "남자" : "여자";
System.out.println(gender);
}
}