
λ§μ (+), λΊμ (-), κ³±μ (x), λλμ (/), λλ¨Έμ§(%)κ° μλ€.
νΌμ°μ°μλ€μ νμ μ΄ λμΌνμ§ μμ λ, μλ νμ λ³νμ΄ λλ€.
(byte, char, short) + int -> int + int = intint + long -> long + long = longint + double/float -> double/float + double/floatdouble/float ( double/floatμ ν¬κΈ°κ° ν° μ€μ νμ
μΌλ‘ λ³ν)μ°μ°μ μ°μΆκ°μ΄ μ°μΆ νμ μΌλ‘ ννμ΄ κ°λ₯ν΄μΌ νλ€.
// μ΅λκ° μ΄κ³Ό
if(n > Integer.MAX_VALUE){
throw new ArithmeticException("μ€λ²νλ‘μ° λ°μ");
}
// μ΅μκ° λ―Έλ§
if(n > Integer.MIN_VALUE){
throw new ArithmeticException("μ€λ²νλ‘μ° λ°μ");
}
μ€μλ κ·Όμ¬μΉλ‘ κ³μ°λκΈ° λλ¬Έμ μ νν κ³μ°μ μν΄μλ μ μλ₯Ό μ¬μ©νλ€.
0μΌλ‘ λλ΄μ λμ Infinite, NaN λ¬Έμ
/μ %μ μ¬μ©ν λ μ°μΈ‘ νΌμ°μ°μλ 0 μ¬μ© λΆκ°
=> ArthmenticException μμΈ λ°μ
μ°μΈ‘ νΌμ°μ°μκ° 0.0 μ΄λ 0.0f μΈ κ²½μ°
/ -> Infinity (무νλ)
% -> NaN(Not a Number)
λ°λΌμ / μ Double.isInfinite()λ₯Ό μ¬μ©ν΄ Infinityλ₯Ό νμΈνκ³ %λ Double.isNaN()λ₯Ό μ¬μ©ν΄ NaNμ νμΈν΄μ€λ€.
μ€μλ₯Ό μ
λ ₯μΌλ‘ λ°μ κ²½μ°λ NaN κ²μ¬ νμ!
( NaNμ != μ μ μΈν λͺ¨λ λΉκ΅μ°μ°μμ κ²°κ³Όκ° falseμ΄λ―λ‘ ==μ΄ μλ Double.isNaN()μ μ¬μ©ν΄μ£Όμ΄μΌ νλ€. )
λΉνΈ μ°μ°μλ νΌμ°μ°μλ₯Ό λΉνΈλ¨μλ‘ λ Όλ¦¬μ°μ°νλ κ²μΌλ‘ μ μλ§ νμ©νλ€.
x << y (left SHIFT)x >> y (right SHIFT)x >>> y (unsigned right SHIFT)int a = 1; // a = 0000 0000 0000 0000 0000 0000 0000 0001
int b = a << 1; // b = 0000 0000 0000 0000 0000 0000 0000 0010
int c = ~a; // c = 1111 1111 1111 1111 1111 1111 1111 1110
int d = c >> 1; // d = 1111 1111 1111 1111 1111 1111 1111 1111
int e = c >>> 1; // e = 0111 1111 1111 1111 1111 1111 1111 1111
& (AND) : λ λΉνΈ λͺ¨λ 1μΌ κ²½μ°μλ§ 1| (OR) : λ λΉνΈ μ€ νλλ§ 1μΌ κ²½μ°μλ§ 1^ (XOR) : λ λΉνΈκ° λ€λ₯Ό κ²½μ°μλ§ 1~ (NOT) : λΉνΈ λ°μ | X | Y | X | Y | X & Y | X ^ Y | ~X |
|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0 | 0 |
| 1 | 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 | 1 |
| 0 | 0 | 0 | 0 | 0 | 1 |
λ νΌμ°μ°μλ₯Ό λΉκ΅νλλ° μ¬μ©λλ μ°μ°μλ‘ λμλΉκ΅μ°μ°μ ( >, <, >=, <= ) μ λ±κ°λΉκ΅μ°μ°μ ( ==, != )κ° μλ€. μ°μ°κ²°κ³Όλ μ€μ§ true, false μ€μ νλμ΄λ€.
β λ¬Έμμ΄μ λΉκ΅ν λλ == λ³΄λ€ equals()λΌλ λ©μλλ₯Ό μ¬μ©νμ.
π§ Short-Circuit Evalustion (SCE) μ΄λ?
&&μ μΌμͺ½ νΌμ°μ°μκ° falseμ΄λ©΄ μ€λ₯Έμͺ½ νΌμ°μ°μλ₯Ό νμΈνμ§ μλλ€.
||μ μΌμͺ½ νΌμ°μ°μκ° trueμ΄λ©΄ μ€λ₯Έμͺ½ νΌμ°μ°μλ₯Ό νμΈνμ§ μλλ€.
public class Operator {
public static void main(String[] args){
int num1 = 0;
int num2 = 0;
boolean result;
result = ((num1 += 10 < 0) && ((num2 += 10) > 0);
System.out.println(num1); //10
System.out.println(num2); //0
System.out.println(result); //false
}
}
μ΄ λ num2λ μ 0μΌκΉ? μ΄μ κ° SCEλλ¬Έμ΄λ€. ((num1 += 10 < 0) && ((num2 += 10) > 0) μ΄ μ°μ°μ μ§νν λ, &&μ μΌνΈμ μλ μ°μ°μ΄ λ¨Όμ μ§νλμ΄ num2κ°μ 10μ΄ λλ€. λ°λΌμ (num1 += 10 < 0)μ κ²°κ³Όλ falseκ° λμ΄ μ€λ₯Έμͺ½ νΌμ°μ°μλ₯Ό νμΈνμ§ μκ³ λ°λ‘ falseλ₯Ό λ°ννλ κ²μ΄λ€. κ·Έλμ num2μ κ³μ°μ μ§νμ‘°μ°¨ λμ§ μλλ€.
κ°μ²΄νμ μ νμΈνλ μ°μ°μλ‘ true/falseλ‘ κ²°κ³Όλ₯Ό λ°ννλ€.
class Parent{}
class Child extends Parent{}
public class InstanceofTest {
public static void main(String[] args){
Parent parent = new Parent();
child child = new Child();
System.out.println( parent instanceof Parent); // true
System.out.println( child instanceof Parent); //true
System.out.println( parent instanceof Child); //false
System.out.println( child instanceof Child); //true
}
}
λ³ΈμΈμ΄ λ³ΈμΈμ§μ μ°Ύκ³ μμμ΄ μμλ°μ λΆλͺ¨μ§μ μ°Ύλ κ²μ trueμ΄λ€. νμ§λ§ λΆλͺ¨κ° μμμ§μ μ°Ύλ κ²½μ°λ§ falseκ° λ κ²μ νμΈν μ μλ€.
λμ μ°μ°μλ‘ λ³μμ κ°μ λμ ν λ μ¬μ©νλ μ΄ν μ°μ°μμ΄λ€. νΌμ°μ°μλ€μ κ²°ν© λ°©ν₯μ μ€λ₯Έμͺ½μμ μΌμͺ½μ΄λ€.
λμ
μ°μ°μμλ =, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, >>>= κ° μκ³ λͺ¨λ = μμͺ½μ μ°μ°μ ν ν, κ·Έ κ²°κ³Όκ°μ μΌμͺ½μ νΌμ°μ°μμ λμ
νλ©΄ λλ€.
Java 8 λ²μ λ, μΆκ°λ κ²μΌλ‘ λλ€ ννμκ³Ό ν¨κ» μ¬μ©λλ€.
(argument, ...) -> {expression}
int min(int x, int y){
return x < y ? x : y ;
}
(x, y) -> x < y ? x : y;
쑰건μ ? νΌμ°μ°μ1 : νΌμ°μ°μ2
쑰건μμ κ²°κ³Όμ λ°λΌ trueμ΄λ©΄ νΌμ°μ°μ1μ΄ κ²°κ³Όμ΄κ³ falseμ΄λ©΄ νΌμ°μ°μ 2κ° κ²°κ³Όμ΄λ€.
if ( x > Y )
result = x;
else
result = y;
result = ( x > y ) ? x : y ;
λ€μκ³Ό κ°μ΄ if λ¬Έμ 3νμ°μ°μλ₯Ό μ¬μ©νμ¬ μ§§κ³ κ°κ²°νκ² νμ¬ κ°λ μ±μ λμΌ μ μλ€λ μ₯μ μ΄ μλ€. νμ§λ§ 3νμ°μ°μκ° μλκ° λ λΉ λ₯Έ κ²μ μλλ€. λ°λΌμ ifλ¬Έμ μ°μ°μ΄ 볡μ‘ν κ²½μ°μλ μ€νλ € 3νμ°μ°μλ‘ μμ±νλ κ²μ΄ λ 볡μ‘ν μ μμΌλ―λ‘ κ²½μ°μ λ°λΌ μ μ¬μ©νλ κ²μ΄ μ€μνλ€.
| μ°μ μμ | μ°μ°μ | νΌμ°μ°μ | μ°μ°λ°©ν₯ |
|---|---|---|---|
| 0 | ()κ΄νΈ μ μ°μ°μ | λ€μ | -> |
| 1 | μ¦κ°(++, --), λΆνΈ(+, -), λΉνΈ(~), λ Όλ¦¬(!) | λ¨ν | <- |
| 2 | μ°μ (*, /, %) | μ΄ν | -> |
| 3 | μ°μ (+, -) | μ΄ν | -> |
| 4 | μ¬ννΈ (>>, <<) | μ΄ν | -> |
| 5 | λΉκ΅(<, >, <=, >=, instanceof) | μ΄ν | -> |
| 6 | λΉκ΅(==, !=) | μ΄ν | -> |
| 7 | λ Όλ¦¬ & | μ΄ν(λ¨ν) | -> |
| 8 | λ Όλ¦¬ ^ | μ΄ν(λ¨ν) | -> |
| 9 | λ Όλ¦¬ | μ΄ν(λ¨ν) | |
| 10 | λ Όλ¦¬ && | μ΄ν | -> |
| 11 | λ Όλ¦¬ | ||
| 12 | 3νμ°μ°μ | μΌν | -> |
| 13 | λμ μ°μ°μ(=, +=, -=, *=, /=, %=, &=, ^=, | =, <<=, >>=, >>>=) | μ΄ν |
κΈ°μ‘΄μ switchλ¬Έμ΄ λ³κ²½λ κ²μ΄ μλλΌ switchμ°μ°μκ° λ°λ‘ μΆκ° λκ²μ΄λ€.
case : λμ case -> λ μ¬μ©κ°λ₯νλ€.Reference
λ³Έ μ€ν°λλ 2020 λ°±κΈ°μ λμ μλ°μ€ν°λμ 컀리νλΌμ μ°Έκ³ νμ¬ μ§ννκ³ μμ΅λλ€.