Skip to content

Latest commit

ย 

History

History
584 lines (395 loc) ยท 20.3 KB

File metadata and controls

584 lines (395 loc) ยท 20.3 KB

์—ฐ์‚ฐ์ž

์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž

๋‘๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๊ฐ–๋Š” ์ดํ•ญ ์—ฐ์‚ฐ์ž๋กœ์จ, ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์น™์—ฐ์‚ฐ์„ ๋‹ค๋ฃจ๋Š” ์—ฐ์‚ฐ์ž

๋”ํ•˜๊ธฐ (+)

์™ผ์ชฝ์˜ ํ”ผ์—ฐ์‚ฐ์ž์— ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋”ํ•˜๋Š” ์—ฐ์‚ฐ์ž๋กœ ์ˆซ์ž+์ˆซ์ž, ๋ฌธ์ž์—ด+๋ฌธ์ž์—ด์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฌธ์ž์—ด+์ˆซ์ž๋ฅผ ํ•  ์‹œ ์ˆซ์ž๋ฅผ ์ž๋™์œผ๋กœ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ง์…ˆ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฌธ์ž+์ˆซ์ž๋ฅผ ํ•  ๊ฒฝ์šฐ์—๋Š” ์•„์Šคํ‚ค ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ž๋กœ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ ๋œ๋‹ค.
๋ฌธ์ž์— ๋งž๋Š” ์•„์Šคํ‚ค ์ฝ”๋“œ๊ฐ’๊ณผ ์ˆซ์ž๋ฅผ ๋”ํ•œ ๊ฒฐ๊ณผ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ์•„์Šคํ‚ค์ฝ”๋“œ๋ฅผ returnํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

int left = 2020;
int right = 1;
int year = left + right;
char ch = A;

System.out.println(year); //2021
System.out.println("20"+"21"); //2021
System.out.println("Hello "+ year); //Hello 2021

System.out.println(ch + 2); //C
System.out.println( 9 + '0'); //9

๋บ„์…ˆ (-)

์™ผ์ชฝ์˜ ํ”ผ์—ฐ์‚ฐ์ž์—์„œ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋นผ๋Š” ์—ฐ์‚ฐ์ž๋กœ ์ˆซ์ž-์ˆซ์ž์™€ ๊ฐ™์ด ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฌธ์ž์—ด์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ณฑ์…ˆ (*)

์™ผ์ชฝ์˜ ํ”ผ์—ฐ์‚ฐ์ž์— ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๊ณฑํ•˜๋Š” ์—ฐ์‚ฐ์ž๋กœ ์ˆซ์ž*์ˆซ์ž์™€ ๊ฐ™์ด ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฌธ์ž์—ด์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๋‚˜๋ˆ—์…ˆ (/)

์™ผ์ชฝ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๋‚˜๋ˆ„๋Š” ์—ฐ์‚ฐ์ž๋กœ ์ˆซ์ž/์ˆซ์ž์™€ ๊ฐ™์ด ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฌธ์ž์—ด์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

์ •์ˆ˜/์ •์ˆ˜๋ฅผ ํ•  ์‹œ ๋‚˜๋จธ์ง€๋Š” ๋ฒ„๋ ค์ง„ ๋ชซ๋งŒ ๊ตฌํ•ด์ง€๋ฉฐ ๋‘ ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์‹ค์ˆ˜(๋ถ€๋™ ์†Œ์ˆ˜๋ฐฉ์‹)๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ๊ฒฐ๊ณผ๋Š” ์‹ค์ˆ˜๊ฐ€ ๋‚˜์˜จ๋‹ค.

์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ 0์ด ๋  ์ˆ˜ ์—†๋‹ค. (0์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์—†๊ณ  ๋‚˜๋ˆˆ๋‹ค๋ฉด ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.)

0์ด ์•„๋‹Œ ์ •์ˆ˜๋ฅผ 0.0์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค๋ฉด Infinity, 0์„ 0.0์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค๋ฉด NaN์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

int left = 5;
int right = 2;
System.out.println(left/right); // 2
System.out.println(left/2.0); // 2.5

System.out.println(left/0.0); //Infinity
System.out.println(0/0.0);      //NaN

๋‚˜๋จธ์ง€ (%)

์™ผ์ชฝ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•˜๋Š” ์—ฐ์‚ฐ์ž๋กœ ์ˆซ์ž%์ˆซ์ž์™€ ๊ฐ™์ด ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฌธ์ž์—ด์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ 0.0์ด๋‚˜ 0์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค๋ฉด NaN์ด ๋ฐ˜ํ™˜๋œ๋‹ค. (์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์ •์ˆ˜์ธ๋ฐ 0์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค๋ฉด ์ปดํŒŒ์ผ ์—๋Ÿฌ)

System.out.println(5%0); //์ปดํŒŒ์ผ ์—๋Ÿฌ
System.out.println(5.0%0);  //NaN
System.out.println(0.0%0);  //NaN
System.out.println(0%0); //์ปดํŒŒ์ผ ์—๋Ÿฌ

System.out.println(5%0.0);  //NaN
System.out.println(5.0%0.0); //NaN
System.out.println(0.0%0.0); //NaN
System.out.println(0%0.0);  //NaN



๋‹จํ•ญ ์—ฐ์‚ฐ์ž

ํ”ผ ์—ฐ์‚ฐ์ž๋ฅผ ํ•œ๊ฐœ๋งŒ ๊ฐ–๋Š” ์—ฐ์‚ฐ์ž

๋ถ€ํ˜ธ ์—ฐ์‚ฐ (+/-)

์ˆซ์ž๋ฅผ ์ž…๋ ฅ์‹œ +๋Š” ํ˜•์‹์ ์œผ๋กœ ์ œ๊ณต์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

-๋Š” ๋ถ€ํ˜ธ๋ฅผ ๋ฐ”๊พธ๋Š” ์—ฐ์‚ฐ์ž๋กœ 2์˜ ๋ณด์ˆ˜๋ฅผ ์ทจํ•˜๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค.

System.out.println(2);//2
System.out.println(+2);//2
System.out.println(-2);// -2

์ฆ๊ฐ ์—ฐ์‚ฐ์ž (++/--)

์ฆ๊ฐ ์—ฐ์‚ฐ์ž ๋…๋ฆฝ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์œ„์น˜์— ์ƒ๊ด€์—†์ด ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ–๋Š”๋‹ค.

int i=1;
int j=1;

i++; // i = 2
++j; // j = 2
i--; // i = 1
--j; // j = 1

๋‹ค๋ฅธ ๋ช…๋ น๋ฌธ๊ณผ ๊ฐ™์ด ์“ฐ์ธ๋‹ค๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค.

  • ์ „์œ„ ์ฆ๊ฐ ์—ฐ์‚ฐ

    ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ์ „์— ๊ฐ’์„ ์ฆ๊ฐ ์‹œํ‚ค๊ณ  ๋‚œ ํ›„์— ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

    int i=1;
    System.out.println(++i); //2์ถœ๋ ฅ
    System.out.println(--i); //1์ถœ๋ ฅ
  • ํ›„์œ„ ์ฆ๊ฐ ์—ฐ์‚ฐ

    ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋จผ์ € ์ฐธ์กฐํ•˜๊ณ ๋‚œ ํ›„ ์ฆ๊ฐ ์‹œํ‚จ๋‹ค.

    int i = 1;
    System.out.println(i++); //1 ์ถœ๋ ฅ ํ›„ i=2
    System.out.println(i--); //2 ์ถœ๋ ฅ ํ›„ i=1



๋น„ํŠธ ์—ฐ์‚ฐ์ž

ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ด์ง„์ˆ˜๋กœ ์ƒ๊ฐํ•˜๊ณ  ๊ฐ ์ž๋ฆฌ์ˆ˜(bit)๋‹จ์œ„๋กœ ๊ณ„์‚ฐํ•˜๋Š” ์—ฐ์‚ฐ์ž

๋น„ํŠธ NOT (~)

1์˜ ๋ณด์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์—ฐ์‚ฐ์ž๋กœ ๊ฐ bit๋ฅผ ๋ฐ˜์ „ ์‹œํ‚ค๋Š” ์—ฐ์‚ฐ์ž

AND (๋น„ํŠธ๊ณฑ) (&)

๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ bit๋“ค์„ AND ์—ฐ์‚ฐ

  • 1 & 1 = 1

  • 1 & 0 = 0

  • 0 & 1 = 0

  • 0 & 0 = 0

byte num1 = 10;  //bit๋กœ 00001010
byte num2 = 20;  //bit๋กœ 00010100

byte num3 = num1 & num2;
System.out.println(num3); //๋น„ํŠธ ๊ณฑํ•˜๋ฉด 00000000๋กœ 0์ด ๋‚˜์˜จ๋‹ค.

OR (๋น„ํŠธํ•ฉ) (|)

๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ bit๋ฅผ OR ์—ฐ์‚ฐ

  • 1 | 1 = 1

  • 1 | 0 = 1

  • 0 | 1 = 1

  • 0 | 0 = 0

byte num1 = 10;  //bit๋กœ 00001010
byte num2 = 20;  //bit๋กœ 00010100

byte num3 = num1 | num2;
System.out.println(num3); //๋น„ํŠธ ๊ณฑํ•˜๋ฉด 00011110๋กœ 30์ด ๋‚˜์˜จ๋‹ค.

XOR (^)

๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ bit๋ฅผ XOR ์—ฐ์‚ฐ

  • 1 ^ 1 = 0

  • 1 ^ 0 = 1

  • 0 ^ 1 = 1

  • 0 ^ 0 = 0

byte num1 = 10;  //bit๋กœ 00001010
byte num2 = 20;  //bit๋กœ 00010100

byte num3 = num1 ^ num2;
System.out.println(num3); //๋น„ํŠธ XORํ•˜๋ฉด 00011110๋กœ 30์ด ๋‚˜์˜จ๋‹ค.

์˜ค๋ฅธ์ชฝ Shift ์—ฐ์‚ฐ์ž (>>)

์™ผ์ชฝ์˜ ํ”ผ์—ฐ์‚ฐ์ž์˜ bit๋ฅผ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์˜ ์ˆ˜๋งŒํผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ค๊ณ  ๋ฐ€๋ฆฐ ์˜ค๋ฅธ์ชฝ ๋์˜ ๋น„ํŠธ๋Š” ์‚ญ์ œ๋˜๋ฉฐ ์ƒˆ๋กœ ์˜ค๋Š” ๊ฐ€์žฅ ์™ผ์ชฝ์˜ bit๋Š” ์›๋ž˜ ๋ถ€ํ˜ธ์— ๋”ฐ๋ผ 0(์–‘์ˆ˜) or 1(์Œ์ˆ˜)๋กœ ์ฑ„์›Œ์ง„๋‹ค.

byte num1 = 10; //00001010
byte num2 = -10; //11110110

System.out.println(num1 >> 1); //00000101
System.out.println(num2 >> 1); //11111011

unsigned ์˜ค๋ฅธ์ชฝ Shift ์—ฐ์‚ฐ์ž ( >>> )

์™ผ์ชฝ์˜ ํ”ผ์—ฐ์‚ฐ์ž์˜ bit๋ฅผ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์˜ ์ˆ˜๋งŒํผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ค๊ณ  ๋ฐ€๋ฆฐ ์˜ค๋ฅธ์ชฝ ๋์˜ ๋น„ํŠธ๋Š” ์‚ญ์ œ๋˜๋ฉฐ ์ƒˆ๋กœ ์˜ค๋Š” ๊ฐ€์žฅ ์™ผ์ชฝ์˜ bit๋Š” ๋ถ€ํ˜ธ์— ์ƒ๊ด€์—†์ด 0์œผ๋กœ ์ฑ„์›Œ์ง„๋‹ค.

byte num1 = 10; //00001010
byte num2 = -10; //11110110

System.out.println(num1 >> 1); //00000101
System.out.println(num2 >> 1); //01111011

์™ผ์ชฝ Shift ์—ฐ์‚ฐ์ž (<<)

์™ผ์ชฝ์˜ ํ”ผ์—ฐ์‚ฐ์ž์˜ bit๋ฅผ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์˜ ์ˆ˜๋งŒํผ ์™ผ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ค๊ณ  ๋ฐ€๋ฆฐ ์™ผ์ชฝ ๋์˜ ๋น„ํŠธ๋Š” ์‚ญ์ œ๋˜๋ฉฐ ์ƒˆ๋กœ ์˜ค๋Š” ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์˜ bit๋Š” 0์œผ๋กœ ์ฑ„์›Œ์ง„๋‹ค.

byte num1 = 10; //00001010
byte num2 = -10; //11110110

System.out.println(num1 << 1); //00010100
System.out.println(num2 << 1); //11101100



๊ด€๊ณ„ ์—ฐ์‚ฐ์ž

๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ„์— ๊ฐ’์„ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ์‚ฐ์ž

๋™์น˜ ์—ฐ์‚ฐ์ž ( == / != )

๋‘ ํ”ผ์—ฐ์‚ฐ์ž ๊ฐ’์ด ๊ฐ™์€์ง€ ๋น„๊ตํ•˜๋Š” ์—ฐ์‚ฐ์ž๋กœ ์›์‹œํ˜• ํƒ€์ž…๋ผ๋ฆฌ ๋น„๊ตํ• ๋•Œ๋Š” ๊ฐ’์„ ๋น„๊ตํ•˜๊ณ  ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐํƒ€์ž…๋ผ๋ฆฌ์˜ ๋น„๊ต๋ผ๋ฉด ํฐ ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ๋น„๊ตํ•œ๋‹ค.

์ฐธ์กฐ ํƒ€์ž… (String, Array, Class...)๋ผ๋ฆฌ์˜ ๋น„๊ต๋ผ๋ฉด ๋™์ผํ•œ ์›๋ณธ ๋ฐ์ดํ„ฐ(๊ฐ์ฒด)์ธ์ง€ ๋น„๊ตํ•œ๋‹ค.

  • == : ๋‘ ํ”ผ์—ฐ์‚ฐ์ž ๊ฐ’์ด ๊ฐ™์œผ๋ฉด false, ์•„๋‹ˆ๋ฉด false ๋ฐ˜ํ™˜

  • != : ๋‘ ํ”ผ์—ฐ์‚ฐ์ž ๊ฐ’์ด ๊ฐ™์ง€ ์•Š์œผ๋ฉด false, ๊ฐ™์œผ๋ฉด false ๋ฐ˜ํ™˜

< , <=

์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋ณด๋‹ค ์ž‘์€์ง€(์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€์ง€) ํŒ๋‹จํ•˜์—ฌ ๋งž๋‹ค๋ฉด true, ์•„๋‹ˆ๋ผ๋ฉด false๋ฐ˜ํ™˜

>, >=

์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋ณด๋‹ค ํฐ์ง€(ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€์ง€) ํŒ๋‹จํ•˜์—ฌ ๋งž๋‹ค๋ฉด true, ์•„๋‹ˆ๋ผ๋ฉด false ๋ฐ˜ํ™˜

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž

boolean ํ˜•(true/false)๋ฅผ ๋น„๊ตํ•˜๋Š” ์—ฐ์‚ฐ์ž๋กœ ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ booleanํ˜•์ผ๋•Œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ ํ•˜๋‹ค.

๋…ผ๋ฆฌ NOT (!)

ํ•œ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ๋ฐ”๊พธ๋Š” ์—ฐ์‚ฐ์ž

boolean t = true;
System.out.println(!t); //false;

๋…ผ๋ฆฌ AND (&&)

๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋ชจ๋‘ true์ด๋ฉด true ์•„๋‹ˆ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

boolean t = true;
boolean f = false;

System.out.println(t && t); //true
System.out.println(t && f); //false
System.out.println(f && t); //false
System.out.println(f && f); //false

๋…ผ๋ฆฌ OR (||)

๋‘ ํ”ผ์—ฐ์‚ฐ์ž์ค‘ ํ•˜๋‚˜๋ผ๋„ true์ด๋ฉด true ์•„๋‹ˆ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

boolean t = true;
boolean f = false;

System.out.println(t || t); //true
System.out.println(t || f); //true
System.out.println(f || t); //true
System.out.println(f || f); //false

๋‹จ๋ฝ ํšŒ๋กœ ํ‰๊ฐ€ (Short Circuit Evaluation)

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ์ˆ˜ํ–‰ ์ค‘ true๋‚˜ false์กฐ๊ฑด์ด ๋งŒ์กฑ๋œ๋‹ค๋ฉด ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ์ฐธ์กฐ์•ˆํ•˜๊ณ  ๋ฐ”๋กœ true ๋ฆฌํ„ดํ•˜๋Š” ๊ฒƒ

System.out.println(f && t); //์™ผ์ชฝ์ด ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์ด๋ฏธ false์ด๋ฏ€๋กœ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์ธ t ๋Š” ์ฐธ์กฐํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ false return
System.out.println(t && f); //์™ผ์ชฝ์ด true์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅธ์ชฝํ”ผ์—ฐ์‚ฐ์ž ๊ฐ’์— ๋”ฐ๋ผ return๊ฐ’์ด ๋‹ค๋ฅด๋ฏ€๋กœ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž ์ฐธ์กฐํ›„ false return

System.out.println(t || f); //์™ผ์ชฝ์ด ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์ด๋ฏธ true์ด๋ฏ€๋กœ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์ธ t ๋Š” ์ฐธ์กฐํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ truereturn
System.out.println(f || f); //์™ผ์ชฝ์ด false์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅธ์ชฝํ”ผ์—ฐ์‚ฐ์ž ๊ฐ’์— ๋”ฐ๋ผ return๊ฐ’์ด ๋‹ค๋ฅด๋ฏ€๋กœ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž ์ฐธ์กฐํ›„ false return

&,|,^

๋น„ํŠธ ์—ฐ์‚ฐ์ž๋ฅผ ๋…ผ๋ฆฌํ˜•(boolean)์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฒฐ๊ณผ๊ฐ’์€ ๋™์ผํ•˜์ง€๋งŒ ๋‹จ๋ฝ ํšŒ๋กœ ํ‰๊ฐ€๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค.
(์–‘์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋ชจ๋‘ ์ฐธ์กฐํ›„ ๊ฒฐ๊ณผ ๊ฐ’ ๋ฐ˜ํ™˜)

boolean t = true;
boolean f = false;

System.out.println(t & t); //true
System.out.println(t & f); //false
System.out.println(f & t); //false
System.out.println(f & f); //false

System.out.println(t | t); //true
System.out.println(t | f); //true
System.out.println(f | t); //true
System.out.println(f | f); //false

System.out.println(t ^ t); //false
System.out.println(t ^ f); //true
System.out.println(f ^ t); //true
System.out.println(f ^ f); //false



instanceof

์ฐธ์กฐ ํƒ€์ž…์˜ ๋ณ€์ˆ˜๊ฐ€ ํŠน์ • ํƒ€์ž…์ธ์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ์—ฐ์‚ฐ์ž๋กœ ๊ฐ™๋‹ค๋ฉด true, ์•„๋‹ˆ๋ผ๋ฉด false๊ฐ€ ๋ฐ˜ํ™˜๋˜๊ณ  null์„ ๊ฒ€์‚ฌํ•˜๋ ค๊ณ ํ•œ๋‹ค๋ฉด false๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.

์ฐธ์กฐ ํƒ€์ž… ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™”๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๊ฒ€์‚ฌํ•  ๋ณ€์ˆ˜์˜ ์ฐธ์กฐ ๊ฐ’์ด ์—†์œผ๋ฏ€๋กœ ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค.

์ž๋ฐ”์˜ ๋ชจ๋“  ๊ฐ์ฒด๋Š” ์•”์‹œ์ ์œผ๋กœ Object๋ฅผ ์ƒ์†๋ฐ›๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Object๋กœ ๋น„๊ตํ•ด๋„ true๊ฐ€ ๋‚˜์˜ค๋ฉฐ ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์›์‹œํƒ€์ž…์€ ์˜ฌ ์ˆ˜ ์—†๋‹ค.

int[] i;
System.out.println(i instanceof int[]); //์ปดํŒŒ์ผ ์—๋Ÿฌ

int[] i = new int[5];
System.out.println(i instanceof Object); //true
System.out.println(i instanceof int[]); //true

Object j = new int[5];
System.out.println(i instanceof int[]); //true
System.out.println(j instanceof Object);//true

System.out.println(null instanceof Object);//false

System.out.println("hello" instanceof Object);//true
System.out.println("hello" instanceof String);//true

ArrayList arrayList= new ArrayList();
System.out.println(arrayList instanceof ArrayList); //true
System.out.println(arrayList instanceof Object);  //true



assignment(=) ์—ฐ์‚ฐ์ž

์šฐ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•˜๊ฑฐ๋‚˜ ์ฐธ์กฐํ•  ๋ฐ์ดํ„ฐ ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ• ๋•Œ ์“ฐ๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค.

๋ณตํ•ฉ ๋Œ€์ž… ์—ฐ์‚ฐ์ž

์—ฐ์‚ฐ์„ ์‹คํ–‰ ํ›„ ๋Œ€์ž…ํ•˜๋Š” ์—ฐ์‚ฐ์ž๋กœ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž or ๋น„ํŠธ ์—ฐ์‚ฐ์ž or ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž์™€ ๋Œ€์ž…์—ฐ์‚ฐ์ž๋ฅผ ํ•ฉ์นœ ํ˜•ํƒœ์ด๋‹ค.

int i = 10;

i += 1; // i = i + 1
i -= 2; // i = i - 2
i *= 3; // i = i * 3
i /= 4; // i = i / 4
i %= 5; // i = i % 5

i &= 1; // i = i & 1
i |= 2; // i = i | 2
i ^= 3; // i = i ^ 3

i <<= 1; // i = i << 1
i >>= 2; // i = i >> 2
i >>>= 3; // i = i >>> 3



ํ™”์‚ดํ‘œ(->) ์—ฐ์‚ฐ์ž

๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…๋œ ๋žŒ๋‹ค ํ‘œํ˜„์‹์œผ๋กœ ์ต๋ช… ์ปฌ๋ ‰์…˜์ด๋‹ค.

ํ•ต์‹ฌ์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„์ด๋‹ค.

์ปดํŒŒ์ผ๋Ÿฌ์˜ ์ถ”๋ก ์„ ํ†ตํ•ด ์ง€์šธ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋ชจ๋‘ ์ง€์šฐ๊ฑฐ๋‚˜(์ƒ๋žตํ•˜์—ฌ) ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•

interface User{
    void printUserName(String name);
}

User user = new User() {
    @Override
    public void printUserName(String name) {
        System.out.println("User name is " + name);
    }
};

์œ„์˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด setUserName๋ฉ”์„œ๋“œ ํ•˜๋‚˜๋งŒ์„ ๊ฐ–๊ณ ์žˆ๋Š” User ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ด ๋ฉ”์„œ๋“œ๋ฅผ overrideํ•˜๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ํ•˜์ž

์—ฌ๊ธฐ์„œ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” User user๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ช…์‹œ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— new User๋ถ€๋ถ„์€ ์ƒ๋žต์ด๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๊ณ  ๋ฉ”์„œ๋“œ๋Š” ํ•˜๋‚˜๋งŒ ๊ฐ–๊ณ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ๋ฉ”์„œ๋“œ๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์•„๋„ ๋  ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฐ ์ ์„ ์ด์šฉํ•˜์—ฌ ๋žŒ๋‹ค์‹์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋”ฐ.

User user = (name) -> {
    System.out.println("User name is " + name);
}

ํŒŒ๋ผ๋ฏธํ„ฐ ์ธ์ž๊ฐ€ ํ•œ๊ฐœ๋ผ๋ฉด ()๋Š” ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•˜๊ณ  {}์•ˆ์˜ ์ฝ”๋“œ๊ฐ€ ํ•œ์ค„์ด๋ผ๋ฉด {}๋˜ํ•œ ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•˜๋‹ค.



3ํ•ญ ์—ฐ์‚ฐ์ž (?:)

๋ง๊ทธ๋Œ€๋กœ 3๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค.

์กฐ๊ฑด๋ฌธ (if/else)์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์กฐ๊ฑด๋ฌธ ? ๊ฐ’1 : ๊ฐ’2์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ด๋ผ๋ฉด ๊ฐ’1์„ ์กฐ๊ฑด๋ฌธ์ด ๊ฑฐ์ง“์ด๋ผ๋ฉด ๊ฐ’2๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

boolean isTrue1 = (10 > 1) ? true : false;  //10 > 1์€ true์ด๊ธฐ ๋•Œ๋ฌธ์— true๋ฅผ isTrue์— ๋ฐ˜ํ™˜ํ•œ๋‹ค.

(10 > 1) ? true : false; //3ํ•ญ ์—ฐ์‚ฐ์ž๋Š” ์‹์œผ๋กœ์จ ๊ฐ’์„ ๋งŒ๋“ค์–ด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ์ฐธ์กฐ๋‚˜ ๋Œ€์ž…์ด ์—†๋‹ค๋ฉด `Not a Statment`๋ผ๋Š” ์ปดํŒŒ์ผ ์—๋Ÿฌ๋ฅผ ๋„์šด๋‹ค.

if/else์™€ 3ํ•ญ ์—ฐ์‚ฐ์ž ์ฐจ์ด

  • if/else๋Š” statement๋กœ์จ ๊ฐ’์„ ๋งŒ๋“ค์–ด๋‚ด์ง€ ๋ชปํ•œ๋‹ค.

  • 3ํ•ญ ์—ฐ์‚ฐ์ž๋Š” expression์œผ๋กœ์จ ๊ฐ’์„ ๋งŒ๋“ค์–ด ๋‚ธ๋‹ค.

Statement์™€ Expression๋ž€? (if/else์™€ ์‚ผํ•ญ์—ฐ์‚ฐ์ž์˜ ์ฐจ์ด)

๋•Œ๋ฌธ์— ?๋’ค์— ์˜ค๋Š” 2๊ฐœ์˜ ๊ฐ’์—๋Š” ๊ฐ’๋งŒ ๋„ฃ๊ณ  ์ฝ”๋“œ๋ฅผ ๋„ฃ์ง€ ๋ง์ž!!

๊ฐ€๋…์„ฑ๋„ ์•ˆ์ข‹์•„์ง€๊ณ  ์—„์—ฐํžˆ ๋ชฉ์ ์ด ๋‹ค๋ฅด๋‹ค.



์—ฐ์‚ฐ์ž ์šฐ์„  ์ˆœ์œ„

| ์šฐ์„ ์ˆœ์œ„ | ์—ฐ์‚ฐ์ž | ์—ฐ์‚ฐ ๋ฐฉํ–ฅ | ๋™์ž‘ ๋‚ด์šฉ | | :------: | :--------------------------------------------------------------------: | :------------: | :------------------------------------------------: | -------------- | ------- | | 1 | . | ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ | ๊ฐ์ฒด ๋ฉค๋ฒ„ ์ ‘๊ทผ | | | [, ] | ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ | ๋ฐฐ์—ด ์š”์†Œ ์ ‘๊ทผ | | | (args) | ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ | ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ | | | i++, i-- | ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ | ํ›„์œ„ ์ฆ๊ฐ | | 2 | ++i, --i | ์™ผ์ชฝ <- ์˜ค๋ฅธ์ชฝ | ์ „์œ„ ์ฆ๊ฐ | | | +, - | ์™ผ์ชฝ <- ์˜ค๋ฅธ์ชฝ | ๋‹จํ•ญ ์ฆ๊ฐ | | | ~, ! | ์™ผ์ชฝ <- ์˜ค๋ฅธ์ชฝ | ๋น„ํŠธ ๋ณด์ˆ˜, ๋ถ€์ • ์—ฐ์‚ฐ | | 3 | new | ์™ผ์ชฝ <- ์˜ค๋ฅธ์ชฝ | ๊ฐ์ฒด ์ƒ์„ฑ | | | (datatype) | ์™ผ์ชฝ <- ์˜ค๋ฅธ์ชฝ | ์บ์ŠคํŒ…(ํ˜• ๋ณ€ํ™˜) | | 4 | *, /, % | ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ | ๊ณฑํ•˜๊ธฐ, ๋‚˜๋ˆ„๊ธฐ, ๋‚˜๋จธ์ง€ | | 5 | +,- | ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ | ๋”ํ•˜๊ธฐ, ๋นผ๊ธฐ | | 6 | <<, >>, >>> | ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ | ์™ผ์ชฝ ์‹œํ”„ํŠธ, ์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ, ๋ถ€ํ˜ธ์—†๋Š” ์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ | | 7 | <, <=, >, >= | ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ | ์ž‘์Œ, ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์Œ, ํผ, ํฌ๊ฑฐ๋‚˜ ๊ฐ™์Œ | | | instanceof | ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ | ํƒ€์ž… ๋น„๊ต | | 8 | ==, != | ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ | ๊ฐ™์Œ, ๊ฐ™์ง€ ์•Š์Œ | | 9 | & | ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ | AND | | 10 | ^ | ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ | XOR | | 11 | | | ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ | OR | | 12 | && | ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ | ๋…ผ๋ฆฌ AND | | 13 | | | | ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ | ๋…ผ๋ฆฌ OR | | 14 | ?: | ์™ผ์ชฝ <- ์˜ค๋ฅธ์ชฝ | 3ํ•ญ ์—ฐ์‚ฐ์ž | | 15 | =, *=, /=, %=, +=, -=, <<=, >>=, >>>=, &=, ^=, | = | ์™ผ์ชฝ <- ์˜ค๋ฅธ์ชฝ | ๋Œ€์ž… ์—ฐ์‚ฐ์ž | | 16 | -> | ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ | ๋žŒ๋‹ค ํ‘œํ˜„์‹ |



switch ์—ฐ์‚ฐ์ž

  //Java 12 ์ด์ „
        int num = 1;
        int result = 0;
        switch(num){
            case 1:
                result = 1;
                System.out.println("1");
                break;
            case 2:
                result = 2;
                System.out.println("2");
                break;
            case 3:
                result = 3;
                System.out.println("3");
                break;
        }

        //Java 12
        var result2 = switch(num){
            case 1 -> 1;
            case 2 -> System.out.println("2"); //compile error
            case 3 -> 3;
            case 4 :            //compile error
                System.out.println("4");
                break;
            default -> throw new IllegalStateException("default");
        };


        //Java13
        var result3 = switch(num){
            case 1 : {
                System.out.println("1");
                yield 1;
            }
            case 2 : yield 2;
            case 3 : yield 3;
            default :
                throw new IllegalStateException("default");

        };

        var result4 = switch(num){
            case 1 -> {
                System.out.println("1");
                yield 1;
            }
            case 2 -> 2;
            case 3 -> {
                yield 3;
                System.out.println("2");  //compile error
            }
            default ->
                throw new IllegalStateException("default");

        };

๊ธฐ์กด์˜ switch๋ฌธ์—์„œ ์™ธ๋ถ€ ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋Œ€์ž…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์œ„์˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด result = 1๊ณผ ๊ฐ™์€ ์‹์œผ๋กœ ๋งค case๋งˆ๋‹ค ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ํ–ˆ์—ˆ๋‹ค.

Java 8์ดํ›„์— ๋žŒ๋‹ค์‹์ด ์ƒ๊ธฐ๊ณ  ๋‚˜์„œ Java์— ๋งŽ์€ ๋ณ€ํ™”๊ฐ€ ์žˆ์—ˆ๊ณ  Java 12์—๋Š” case๋งˆ๋‹ค ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” switch๋ฌธ์— ๊ฒฝ์šฐ ๋žŒ๋‹ค ํ‘œํ˜„์‹(->)์„ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

Java 12์˜ ๋žŒ๋‹ค ํ‘œํ˜„์‹์˜ ๊ฒฝ์šฐ ๋ฐ”๋กœ ๋Œ€์ž…๊ฐ’์„ ์šฐํ•ญ์— ํ‘œํ˜„ํ•ด์ฃผ์–ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€ ์ž‘์—…์„ ๋ชปํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์–ด

Java 13์— yield๊ฐ€ ์ถ”๊ฐ€ ๋˜์—ˆ๋‹ค.

yield๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ๊ฐ’์„ returnํ•˜๊ณ  case๋ฌธ์„ ์ข…๋ฃŒํ•˜๊ธฐ ๋•Œ๋ฌธ์— yield๋‹ค์Œ ์ค„์— ๋‹ค๋ฅธ ๊ตฌ๋ฌธ์ด ์˜จ๋‹ค๋ฉด compile error๊ฐ€ ๋‚œ๋‹ค.

ํŠน์ง•

  • ๊ฐ case๋งˆ๋‹ค ๋ฐ˜ํ™˜ํƒ€์ž…์„ ์ปดํŒŒ์ผ์‹œ์— ์ถ”๋ก ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๋ก ํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…์ธ var์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ๋ชจ๋“  case์— ๋Œ€ํ•ด ๋ฐ˜ํ™˜ ๊ฐ’์ด ์žˆ์–ด์•ผ error๊ฐ€ ์•ˆ๋‚˜๊ธฐ ๋•Œ๋ฌธ์— default๋ฌธ๋„ ๋ฐ˜๋“œ์‹œ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  • ๋žŒ๋‹ค ํ‘œํ˜„์‹(->)๊ณผ ๊ธฐ์กด ํ‘œํ˜„์‹ (:)์€ ํ˜ผ์šฉํ•ด์„œ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

  • break;๊ตฌ๋ฌธ ์—†์ด๋„ ๋‹ค์Œ case๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค.





Refernece

https://blog.baesangwoo.dev/posts/java-livestudy-3week/#%EB%B9%84%ED%8A%B8-%EC%97%B0%EC%82%B0%EC%9E%90

https://multifrontgarden.tistory.com/124