๐ ์ค๋์ ํ์ต ํค์๋
- java ์ฐ์ฐ์
๐ ์ฐ์ฐ์(Operator)
ํ๋ก๊ทธ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ฐ์ถํ๋ ๊ฒ์ ์ฐ์ฐ(operations)์ด๋ผ๊ณ ํ๋ค.
์ฐ์ฐ์ ์ฌ์ฉ๋๋ ํ์๋ ๊ธฐํธ๋ฅผ ์ฐ์ฐ์(operator)๋ผ๊ณ ํ๊ณ , ์ฐ์ฐ๋๋ ๋ฐ์ดํฐ๋ ํผ์ฐ์ฐ์(operand)๋ผ๊ณ ํ๋ค.
์๋ฅผ ๋ค์ด ๋ค์ ์ฐ์ฐ์์์ +, -, *, == ์ ์ฐ์ฐ์์ด๊ณ , x, y, z ๋ณ์๋ ํผ์ฐ์ฐ์์ด๋ค.
x + y
x - y
x * y + z
x == y
๐ ์ฐ์ฐ์(Operator)์ ์ข ๋ฅ
1. ์ฐ์ ์ฐ์ฐ์ : ์ฃผ๋ก ์ซ์๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. +(๋ํ๊ธฐ), -(๋นผ๊ธฐ), *(๊ณฑํ๊ธฐ), /(๋๋๊ธฐ), %(๋๋จธ์ง)
public class Operator1 {
public static void main(String[] args) {
// ๋ณ์ ์ด๊ธฐํ
int a = 5;
int b = 2;
// ๋ง์
int sum = a + b;
System.out.println("a + b = " + sum); // ์ถ๋ ฅ: a + b = 7
// ๋บ์
int diff = a - b;
System.out.println("a - b = " + diff); // ์ถ๋ ฅ: a - b = 3
// ๊ณฑ์
int multi = a * b;
System.out.println("a * b = " + multi); // ์ถ๋ ฅ: a * b = 10
// ๋๋์
int div = a / b;
System.out.println("a / b = " + div); // ์ถ๋ ฅ: a / b = 2
// ๋๋จธ์ง
int mod = a % b;
System.out.println("a % b = " + mod); // ์ถ๋ ฅ: a % b = 1
}
}
โ ๏ธ 0์ผ๋ก ๋๋๊ธฐ
10 / 0๊ณผ ๊ฐ์ด ์ซ์๋ 0์ผ๋ก ๋๋ ์ ์๋ค.(์ํ์์ ํ์ฉํ์ง ์๋๋ค.)
์ฐ์ฐํ ๋ ํ๋ก๊ทธ๋จ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์ธ๋ฅผ ํ์ธํ ์ ์๋ค.
Exception in thread "main" java.lang.ArithmeticException: / by zero
์์ธ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ์์ ์ดํ์ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋์ง ์๊ณ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ค. ์์ธ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค.
โป ๋ฌธ์์ด ๋ํ๊ธฐ : ๋ฌธ์์ด์ธ String ํ์ ์ ๋ค๋ฅธ ํ์ ์ ๋ํ๋ ๊ฒฝ์ฐ ๋์ ํ์ ์ ๋ฌธ์์ด๋ก ๋ณ๊ฒฝํ๋ค.
public class Operator2 {
public static void main(String[] args) {
//๋ฌธ์์ด๊ณผ ๋ฌธ์์ด ๋ํ๊ธฐ1
String result1 = "hello " + "world";
System.out.println(result1); // ์ถ๋ ฅ: hello world
//๋ฌธ์์ด๊ณผ ๋ฌธ์์ด ๋ํ๊ธฐ2
String s1 = "string1";
String s2 = "string2";
String result2 = s1 + s2;
System.out.println(result2); // ์ถ๋ ฅ: string1string2
//๋ฌธ์์ด๊ณผ ์ซ์ ๋ํ๊ธฐ1
String result3 = "a + b = " + 10;
System.out.println(result3); // ์ถ๋ ฅ: a + b = 10
//๋ฌธ์์ด๊ณผ ์ซ์ ๋ํ๊ธฐ2
int num = 20;
String str = "a + b = ";
String result4 = str + num;
System.out.println(result4); // ์ถ๋ ฅ: a + b = 20
}
}
2. ์ฆ๊ฐ ์ฐ์ฐ์ : ๋ณ์์ ๊ฐ์ 1 ์ฆ๊ฐ(++)์ํค๊ฑฐ๋ 1 ๊ฐ์(--)์ํค๋ ์ฐ์ฐ์๋ฅผ ๋งํ๋ค. boolean ํ์ ์ ์ ์ธํ ๋ชจ๋ ๊ธฐ๋ณธ ํ์ ์ ํผ์ฐ์ฐ์์ ์ฌ์ฉํ ์ ์๋ค.
int x = 1;
int y = 1;
int result1 = ++x + 10; // result1์๋ 12๊ฐ ์ ์ฅ๋๋ค.
int result2 = y++ + 10; // result2์๋ 11์ด ์ ์ฅ๋๋ค.
// ++x: ์ฆ๊ฐ ์ฐ์ฐ์๋ฅผ ํผ์ฐ์ฐ์ ์์ ๋๋ค. ์ด๊ฒ์ ์ ์(Prefix) ์ฆ๊ฐ ์ฐ์ฐ์๋ผ ํ๋ค.
// ์ฆ๊ฐ ์ฐ์ฐ์ด ๋จผ์ ์ํ๋ ํ ๋๋จธ์ง ์ฐ์ฐ์ด ์ํ๋๋ค.
// y++: ์ฆ๊ฐ ์ฐ์ฐ์๋ฅผ ํผ์ฐ์ฐ์ ๋ค์ ๋๋ค. ์ด๊ฒ์ ํ์(Postfix) ์ฆ๊ฐ ์ฐ์ฐ์๋ผ ํ๋ค.
// ๋ค๋ฅธ ์ฐ์ฐ์ด ๋จผ์ ์ํ๋ ํ ์ฆ๊ฐ ์ฐ์ฐ์ด ์ํ๋๋ค.
// ์ฆ๊ฐ ์ฐ์ฐ์๋ฅผ ๋จ๋
์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ๋ค๋ฅธ ์ฐ์ฐ์ด ์๊ธฐ ๋๋ฌธ์, ๋ณธ์ธ์ ๊ฐ๋ง ์ฆ๊ฐํ๋ค.
// ๋ฐ๋ผ์ ์ ์์ด๋ ํ์์ด๋ ๋๋ค ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋ค.
// ++z;
// z++;
3. ๋น๊ต ์ฐ์ฐ์ : ๋น๊ต ์ฐ์ฐ์๋ ๋์(<, <=, >, =>) ๋๋ ๋๋ฑ(==,!=)์ ๋น๊ตํด์ boolean ํ์ ์ธ true/false๋ฅผ ์ฐ์ถํ๋ค. ๋์ ์ฐ์ฐ์๋ boolean ํ์ ์ ์ ์ธํ ๊ธฐ๋ณธ ํ์ ์ ์ฌ์ฉํ ์ ์๊ณ , ๋๋ฑ ์ฐ์ฐ์๋ ๋ชจ๋ ํ์ ์ ์ฌ์ฉ๋ ์ ์๋ค. ๋น๊ต ์ฐ์ฐ์๋ ํ๋ฆ ์ ์ด๋ฌธ์ธ ์กฐ๊ฑด๋ฌธ(if), ๋ฐ๋ณต๋ฌธ(for, while)์์ ์ฃผ๋ก ์ด์ฉ๋์ด ์คํ ํ๋ฆ์ ์ ์ดํ ๋ ์ฌ์ฉ๋๋ค.
public class Comp1 {
public static void main(String[] args) {
int a = 2;
int b = 3;
System.out.println(a == b); // false, a์ b๋ ๊ฐ์ง ์๋ค
System.out.println(a != b); // true, a์ b๋ ๋ค๋ฅด๋ค
System.out.println(a > b); // false, a๋ b๋ณด๋ค ํฌ์ง ์๋ค
System.out.println(a < b); // true, a๋ b๋ณด๋ค ์๋ค
System.out.println(a >= b); // false, a๋ b๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ง ์๋ค
System.out.println(a <= b); // true, a๋ b๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค
//๊ฒฐ๊ณผ๋ฅผ boolean ๋ณ์์ ๋ด๊ธฐ
boolean result = a == b; // a == b: false
System.out.println(result); // false
}
}
โป ๋ฌธ์์ด ๋น๊ตํ๊ธฐ : ์๋ฐ๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ด ๊ฐ์ผ๋ฉด ๋์ผํ String ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋๋ก ๋์ด ์๋ค. ๊ทธ๋์ ๋์ผํ String ๊ฐ์ฒด์ด๊ฑด ๋ค๋ฅธ String ๊ฐ์ฒด์ด๊ฑด ์๊ด์์ด String ๊ฐ์ฒด์ ๋ฌธ์์ด๋ง์ ๋น๊ตํ๊ณ ์ถ๋ค๋ฉด ==์ด ์๋๋ผ, equals() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
public class Comp2 {
public static void main(String[] args) {
String str1 = "๋ฌธ์์ด1";
String str2 = "๋ฌธ์์ด2";
boolean result1 = "hello".equals("hello"); // ๋ฆฌํฐ๋ด ๋น๊ต
boolean result2 = str1.equals("๋ฌธ์์ด1"); // ๋ฌธ์์ด ๋ณ์, ๋ฆฌํฐ๋ด ๋น๊ต
boolean result3 = str1.equals(str2); // ๋ฌธ์์ด ๋ณ์ ๋น๊ต
System.out.println("result1 = " + result1); // result1 = true
System.out.println("result2 = " + result2); // result2 = true
System.out.println("result3 = " + result3); // result3 = false
}
}
4. ๋ ผ๋ฆฌ ์ฐ์ฐ์ : ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ boolean ํ์ธ true, false๋ฅผ ๋น๊ตํ๋๋ฐ ์ฌ์ฉํ๋ค. && (and), || (or), ! (not)
- &&(๊ทธ๋ฆฌ๊ณ ) : ๋ ํผ์ฐ์ฐ์๊ฐ ๋ชจ๋ ์ฐธ์ด๋ฉด ์ฐธ์ ๋ฐํ. ๋์ค ํ๋๋ผ๋ ๊ฑฐ์ง์ด๋ฉด ๊ฑฐ์ง์ ๋ฐํ
- ||(๋๋) : ๋ ํผ์ฐ์ฐ์ ์ค ํ๋๋ผ๋ ์ฐธ์ด๋ฉด ์ฐธ์ ๋ฐํ. ๋๋ค ๊ฑฐ์ง์ด๋ฉด ๊ฑฐ์ง์ ๋ฐํ
- !(๋ถ์ ) : ํผ์ฐ์ฐ์์ ๋ ผ๋ฆฌ์ ๋ถ์ ์ ๋ฐํ. ์ฆ, ์ฐธ์ด๋ฉด ๊ฑฐ์ง์, ๊ฑฐ์ง์ด๋ฉด ์ฐธ์ ๋ฐํ
public class Logical1 {
public static void main(String[] args) {
System.out.println("&&: AND ์ฐ์ฐ");
System.out.println(true && true); //true
System.out.println(true && false);//false
System.out.println(false && false);//false
System.out.println("||: OR ์ฐ์ฐ");
System.out.println(true || true); //true
System.out.println(true || false);//true
System.out.println(false || false);//false
System.out.println("! ์ฐ์ฐ");
System.out.println(!true); //false
System.out.println(!false); //true
System.out.println("๋ณ์ ํ์ฉ");
boolean a = true;
boolean b = false;
System.out.println(a && b); // false
System.out.println(a || b); // true
System.out.println(!a); // false
System.out.println(!b); // true
}
}
5. ๋์ ์ฐ์ฐ์ : ๋์ ์ฐ์ฐ์(=)๋ ๊ฐ์ ๋ณ์์ ํ ๋นํ๋ ์ฐ์ฐ์์ด๋ค. ์ด ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๊ฐ์ ์ข์ธก ํผ์ฐ์ฐ์์ธ ๋ณ์์ ์ ์ฅํ๋ค. ๋จ์ํ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๊ฐ์ ๋ณ์์ ์ ์ฅํ๋ ๋จ์ ๋์ ์ฐ์ฐ์๊ฐ ์๊ณ , ์ ํด์ง ์ฐ์ฐ์ ์ํํ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ณ์์ ์ ์ฅํ๋ ๋ณตํฉ ๋์ ์ฐ์ฐ์๋ ์๋ค.
- = : ์ฐ์ธก์ ํผ์ฐ์ฐ์์ ๊ฐ์ ๋ณ์์ ์ ์ฅ
- += : ์ฐ์ธก์ ํผ์ฐ์ฐ์์ ๊ฐ์ ๋ณ์์ ๊ฐ๊ณผ ๋ํ ํ์ ๋ค์ ๋ณ์์ ์ ์ฅ (๋ณ์ = ๋ณ์ + ํผ์ฐ์ฐ์)
- -= : ์ฐ์ธก์ ํผ์ฐ์ฐ์์ ๊ฐ์ ๋ณ์์ ๊ฐ์์ ๋บ ํ์ ๋ค์ ๋ณ์์ ์ ์ฅ (๋ณ์ = ๋ณ์ - ํผ์ฐ์ฐ์)
- *= : ์ฐ์ธก์ ํผ์ฐ์ฐ์์ ๊ฐ์ ๋ณ์์ ๊ณฑ๊ณผ ๊ณฑํ ํ์ ๋ค์ ๋ณ์์ ์ ์ฅ (๋ณ์ = ๋ณ์ * ํผ์ฐ์ฐ์)
- /= : ์ฐ์ธก์ ํผ์ฐ์ฐ์์ ๊ฐ์ผ๋ก ๋ณ์์ ๊ฐ์ ๋๋ ํ์ ๋ค์ ๋ณ์์ ์ ์ฅ (๋ณ์ = ๋ณ์ / ํผ์ฐ์ฐ์)
- %= : ์ฐ์ธก์ ํผ์ฐ์ฐ์์ ๊ฐ์ผ๋ก ๋ณ์์ ๊ฐ์ ๋๋ ํ์ ๋๋จธ์ง๋ฅผ ๋ณ์์ ์ ์ฅ (๋ณ์ = ๋ณ์ % ํผ์ฐ์ฐ์)
public class Assign01 {
public static void main(String[] args) {
int a = 5; // 5
a += 3; // 8(5+3): a=a+3
a-=2; // 6(8-2): a=a-2
a*=4; // 24(6*4):a=a*4
a/=3; // 8(24/3):a=a/3
a%=5; // 3(8%5):a=a%5
System.out.println(a); // ์ถ๋ ฅ : 3
}
}
6. ์ผํญ ์ฐ์ฐ์ : ์ผํญ ์ฐ์ฐ์(? :)๋ ์ธ ๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ ํ์๋ก ํ๋ ์ฐ์ฐ์๋ฅผ ๋งํ๋ค. ์ผํญ ์ฐ์ฐ์๋ ?์์ ์กฐ๊ฑด์์ ๋ฐ๋ผ ์ฝ๋ก (:) ์๋ค์ ํผ์ฐ์ฐ์๊ฐ ์ ํ๋๋ค๊ณ ํด์ ์กฐ๊ฑด ์ฐ์ฐ์์ด๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
์กฐ๊ฑด์(ํผ์ฐ์ฐ์1) ? ๊ฐ ๋๋ ์ฐ์ฐ์(ํผ์ฐ์ฐ์2) : ๊ฐ ๋๋ ์ฐ์ฐ์(ํผ์ฐ์ฐ์3)
true false
์กฐ๊ฑด์์ ์ฐ์ฐํ์ฌ true๊ฐ ๋์ค๋ฉด ์ผํญ ์ฐ์ฐ์์ ๊ฒฐ๊ณผ๋ ํผ์ฐ์ฐ์2๊ฐ ๋๋ค. ๋ฐ๋ฉด์ ์กฐ๊ฑด์์ ์ฐ์ฐํ์ฌ false๊ฐ ๋์ค๋ฉด ์ผํญ ์ฐ์ฐ์์ ๊ฒฐ๊ณผ๋ ํผ์ฐ์ฐ์3์ด ๋๋ค. ํผ์ฐ์ฐ์2์ 3์๋ ์ฃผ๋ก ๊ฐ์ด ์ค์ง๋ง, ๊ฒฝ์ฐ์ ๋ฐ๋ผ์๋ ์ฐ์ฐ์์ด ์ฌ ์๋ ์๋ค.
public class ConditionalOperation {
public static void main(String[] args) {
int score = 85;
char grade = (score > 90) ? 'A' : (score > 80) ? 'B' : 'C';
System.out.println(score + "์ ์ " + grade + "๋ฑ๊ธ์
๋๋ค.");
// ์ถ๋ ฅ : 85์ ์ B๋ฑ๊ธ์
๋๋ค.
}
}
โป ์ฐ์ฐ์ ์ฐ์ ์์
public class W08 {
public static void main(String[] args) {
// ์ฐ์ฐ์ ์ฐ์ ์์
int x = 2;
int y = 9;
int z = 10;
boolean result = x < y && y < z; // <,> ๋น๊ต์ฐ์ฐ์ ๊ณ์ฐ ํ && ๋
ผ๋ฆฌ ์ฐ์ฐ์ ๊ณ์ฐ
System.out.println(result); // true
result = x + 10 < y && y < z; // +10 ์ฐ์ ์ฐ์ฐ์ ๊ณ์ฐ ํ <,> ๋น๊ต์ฐ์ฐ์ ๊ณ์ฐ ํ && ๋
ผ๋ฆฌ ์ฐ์ฐ์ ๊ณ์ฐ
System.out.println(result); // false
result = x + 2 * 3 > y; // ์ฐ์ ์ฐ์ฐ์ ๊ณฑ์
> ๋ง์
์์ผ๋ก ๊ณ์ฐ ํ > ๋น๊ต์ฐ์ฐ์ ๊ณ์ฐ
System.out.println(result); // false (8>9)
result = (x + 2) * 3 > y; // ๊ดํธ์ ๋ง์
์ฐ์ฐ ํ ๊ดํธ ๋ฐ ๊ณฑ์
๊ณ์ฐ ํ > ๋น๊ต์ฐ์ฐ์ ๊ณ์ฐ
System.out.println(result); // true (12>9)
}
}
7. ๋นํธ ์ด๋ ์ฐ์ฐ์ : ๋นํธ(bit)๋ฅผ ์ข์ธก ๋๋ ์ฐ์ธก์ผ๋ก ์ด๋ํ๋ ์ฐ์ฐ์์ด๋ค.
// ๋นํธ ์ฐ์ฐ
// ์ฐธ๊ณ , 3์ ์ด์ง์๊ฐ์ 11(2) ์
๋๋ค. 12์ ์ด์ง์๊ฐ์ 1100(2) ์
๋๋ค.
// (2) ํ๊ธฐ๋ ์ด ์ซ์๊ฐ ์ด์ง์๊ฐ์ด๋ผ๋ ํ์ ์
๋๋ค.
System.out.println(3 << 2);
// 3์ ์ด์ง์๊ฐ์ธ 11(2) ์์ ์ผ์ชฝ์ผ๋ก 2๋ฒ ์ฎ๊ฒจ์ ธ์ 1100(2) ์ธ 12๊ฐ์ด ๋ฉ๋๋ค.
System.out.println(3 >> 1);
// 3์ ์ด์ง์๊ฐ์ธ 11(2) ์์ ์ค๋ฅธ์ชฝ์ผ๋ก 1๋ฒ ์ฎ๊ฒจ์ ธ์ 1(2) ์ธ 1 ๊ฐ์ด ๋ฉ๋๋ค.