JAVA ๊ณต๋ถ€ํ•˜๊ธฐ(3) ๐Ÿง‘๐Ÿปโ€๐Ÿ’ป

41042 ๋‹จ์–ด JavaJava

1. ์ž๋ฐ”์˜ ํ‚ค ์ž…๋ ฅ

1.(1) System.in

System.in์€ ํ‚ค๋ณด๋“œ ์žฅ์น˜์™€ ์ง์ ‘ ์—ฐ๊ฒฐ๋˜๋Š” ํ‘œ์ค€ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ ๊ฐ์ฒด๋กœ, ํ‚ค ๊ฐ’์„ ๋ฐ”์ดํŠธ ์ •๋ณด๋กœ ๋ฐ”๊พธ์–ด ์ œ๊ณตํ•˜๋Š” ์ €์ˆ˜์ค€(low-level) ์ŠคํŠธ๋ฆผ ๊ฐ์ฒด์ด๋‹ค.ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์„ ๋ฐ›๊ธฐ ์œ„ํ•ด System.in์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ์€ ๋ฐ”์ดํŠธ ์ •๋ณด๋ฅผ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์ด ๋ฌธ์ž๋‚˜ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ‚ค๋ณด๋“œ์—์„œ ์ž…๋ ฅ๋œ ํ‚ค๋ฅผ ๋ฌธ์ž๋‚˜ ์ •์ˆ˜, ์‹ค์ˆ˜, ๋ฌธ์ž์—ด ๋“ฑ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ๊ณ ์ˆ˜์ค€(high-level) ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค Scanner๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒํ•œ๋‹ค.

Scanner๋Š” ํ‚ค ์ž…๋ ฅ์„ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์ž๋ฐ” ํŒจํ‚ค์ง€์—์„œ ์ œ๊ณต๋˜๋Š” ํด๋ž˜์Šค์ด๋‹ค.

1.(2) Scanner๋ฅผ ์ด์šฉํ•œ ํ‚ค ์ž…๋ ฅ

์ง€๊ธˆ๋ถ€ํ„ฐ Scanner๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‚ค ์ž…๋ ฅ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž

1.(2)-(1) Scanner ๊ฐ์ฒด ์ƒ์„ฑ

Scanner ๊ฐ์ฒด๋Š” ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ์ƒ์„ฑํ•œ๋‹ค.

Scanner scanner = new Scanner(System.in);

scanner ๊ฐ์ฒด๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด System.in์œผ๋กœ ํ•˜์—ฌ๊ธˆ ํ‚ค๋ณด๋“œ๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ๋ฐ›๊ฒŒ ํ•˜๊ณ , System.in ์ด ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์„ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์˜ ์ž…๋ง›์— ๋”ฐ๋ผ ๋ฌธ์ž, ๋ฌธ์ž์—ด, ์ •์ˆ˜, ์‹ค์ˆ˜ ๋“ฑ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฆฌํ„ดํ•œ๋‹ค.

1.(2)-(2) import ๋ฌธ ํ•„์š”

Scanner๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๋งจ ์•ž์ค„์— ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

import java.util.Scanner;

import ๋ฌธ์€ Scanner ํด๋ž˜์Šค์˜ ๊ฒฝ๋กœ๋ช…์ด java.util.Scanner ์ž„์„ ์•Œ๋ ค์ค€๋‹ค. ์ด import ๋ฌธ์ด ์—†์œผ๋ฉด ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ Scanner ํด๋ž˜์Šค ์ฝ”๋“œ๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค.

1.(2)-(3) Scanner ํด๋ž˜์Šค๋กœ ํ‚ค ์ž…๋ ฅ๋ฐ›๊ธฐ

Scanner ํด๋ž˜์Šค๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ํ‚ค ๊ฐ’์„ ๊ณต๋ฐฑ(' \f ', ' \r ', ' ', ' \n ') ์œผ๋กœ ๊ตฌ๋ถ„๋˜๋Š” ํ† ํฐ ๋‹จ์œ„๋กœ ์ฝ๋Š”๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ์ž๊ฐ€ "Kim Seoul 20 65.1 true"๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, Scanner๋Š” ๋นˆ์นธ์œผ๋กœ ๋Š์–ด์„œ "Kim", "Seoul", "20", "65.1", "true"์˜ ํ† ํฐ ๋‹จ์œ„๋กœ ์ฝ๋Š”๋‹ค.

1.(2)-(4) Scanner ์ŠคํŠธ๋ฆผ ๋‹ซ๊ธฐ

Scanner์˜ ์‚ฌ์šฉ์„ ์ข…๋ฃŒํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‹ซ์•„ ์ค€๋‹ค.

scanner.close();

์‘์šฉํ”„๋กœ๊ทธ๋žจ์—์„œ Scananer๋ฅผ ๋‹ซ๋Š” ์ฝ”๋“œ๊ฐ€ ์—†์œผ๋ฉด ์ปดํŒŒ์ผ ์‹œ์— ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ, ์‹คํ–‰ํ•˜๋Š” ๋ฐ๋Š” ํŠน๋ณ„ํžˆ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋ฉด ์ž๋™์œผ๋กœ ๋‹ซํžŒ๋‹ค.

1.(2)-(5) ์˜ˆ์ œ

import java.util.Scanner;
public class ScannerEx {
    public static void main(String args[]){
        System.out.println("์ด๋ฆ„, ๋„์‹œ, ๋‚˜์ด, ์ฒด์ค‘, ๋…์‹  ์—ฌ๋ถ€๋ฅผ ๋นˆ์นธ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ž…๋ ฅํ•˜์„ธ์š”");

        Scanner scanner = new Scanner(System.in);
        String name = scanner.next();
        System.out.println("๋‹น์‹ ์˜ ์ด๋ฆ„์€ " + name + "์ž…๋‹ˆ๋‹ค.");
        String city = scanner.next();
        System.out.println("๋‹น์‹ ์ด ์‚ฌ๋Š” ๋„์‹œ๋Š” " + city + "์ž…๋‹ˆ๋‹ค.");
        int age = scanner.nextInt();
        System.out.println("๋‹น์‹ ์˜ ๋‚˜์ด๋Š”" + age + "์‚ด ์ž…๋‹ˆ๋‹ค.");
        double weight = scanner.nextDouble();
        System.out.println("๋‹น์‹ ์˜ ์ฒด์ค‘์€ " + weight + "kg์ž…๋‹ˆ๋‹ค.");
        boolean single = scanner.nextBoolean();
        System.out.println("๋‹น์‹ ์˜ ๋…์‹  ์—ฌ๋ถ€๋Š” " + single + "์ž…๋‹ˆ๋‹ค.");

        scanner.close();
    }
}

2.์—ฐ์‚ฐ์ž

2.(1) ์‹๊ณผ ์—ฐ์‚ฐ์ž

์ฃผ์–ด์ง„ ์‹(expression) ์„ ๊ณ„์‚ฐํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์–ป์–ด๋‚ด๋Š” ๊ณผ์ •์„ ์—ฐ์‚ฐ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ž๋ฐ”์˜ ์—ฐ์‚ฐ ์ข…๋ฅ˜์™€ ์—ฐ์‚ฐ์ž๋Š” ์•„๋ž˜ ํ‘œ์™€ ๊ฐ™์ด ๋‹ค์–‘ํ•˜๋‹ค.

2.(2) ์‚ฐ์ˆ  ์—ฐ์‚ฐ

์ˆ˜์‹ ๊ณ„์‚ฐ์— ์‚ฌ์šฉํ•˜๋Š” ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋Š” ๋”ํ•˜๊ธฐ(+), ๋บด๊ธฐ(-), ๊ณฑํ•˜๊ธฐ(*), ๋‚˜๋ˆ„๊ธฐ(/), ๋‚˜๋จธ์ง€(%) ์˜ 5๊ฐœ์ด๋‹ค. / ๋Š” ๋ชซ์„ ๊ตฌํ•˜๋ฉฐ, % ๋Š” ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ •์ˆ˜ 69๋ฅผ ์ด๋ฃจ๋Š” 10์˜ ์ž๋ฆฌ์ˆ˜์™€ 1์˜ ์ž๋ฆฌ์ˆ˜๋ฅผ ๋ถ„๋ฆฌํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜๋ฉด ๋œ๋‹ค.

69 / 10 = 6 //๋ชซ
69 % 10 = 9 //๋‚˜๋จธ์ง€

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

int r = n % 2 //r์ด 1์ด๋ฉด n์€ ํ™€์ˆ˜, 0์ด๋ฉด ์ง์ˆ˜

๋˜ํ•œ n ์˜ ๊ฐ’์ด 3์˜ ๋ฐฐ์ˆ˜์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

int s = n % 3; //s๊ฐ€ 0์ด๋ฉด n์€ 3์˜ ๋ฐฐ์ˆ˜

2.(2)-(1) ์˜ˆ์ œ

import java.util.Scanner;
public class AssignmentIncDecOperator {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);

        System.out.println("์ •์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์„ธ์˜ค: ");
        int time = scanner.nextInt();
        int second = time % 60;
        int minute = (time / 60) % 60;
        int hour = (time / 60) / 60;

        System.out.println(time + "์ดˆ๋Š” ");
        System.out.println(hour + "์‹œ๊ฐ„, ");
        System.out.println(minute + "๋ถ„, ");
        System.out.println(second + "์ดˆ์ž…๋‹ˆ๋‹ค.");

        scanner.close();
    }
}

2.(3) ์ฆ๊ฐ ์—ฐ์‚ฐ

์ฆ๊ฐ ์—ฐ์‚ฐ์ž ๋Š” ์•„๋ž˜ ํ‘œ์™€ ๊ฐ™์ด ++, --์˜ ๋‘ ๊ฐ€์ง€์ด๋ฉฐ, ํ”ผ์—ฐ์‚ฐ์ž์˜ ์•ž ๋˜๋Š” ๋’ค์— ๋ถ™์–ด ๊ฐ’์„ 1 ์ฆ๊ฐ€์‹œํ‚ค๊ฑฐ๋‚˜ 1 ๊ฐ์†Œ์‹œํ‚จ๋‹ค.

int a = 1;
a++; //a ๊ฐ’ 1 ์ฆ๊ฐ€, a๋Š” 2
++a; //๋‹ค์‹œ a ๊ฐ’ 1 ์ฆ๊ฐ€ a๋Š” 3

์—ฐ์‚ฐ์ž๊ฐ€ ๋ณ€์ˆ˜์˜ ์•ž์— ๋ถ™์„ ๋•Œ ์ „์œ„ ์—ฐ์‚ฐ์ž๋ผ๊ณ  ๋ถ€๋ฅด๊ณ , ๋’ค์— ๋ถ™์„ ๋•Œ ํ›„์œ„ ์—ฐ์‚ฐ์ž๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด ๋‘˜์€ ๋ชจ๋‘ 1 ์ฆ๊ฐ€์‹œํ‚ค๋Š” ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•˜์ง€๋งŒ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์€ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค.

์ „์œ„ ์—ฐ์‚ฐ์ž์˜ ๊ฒฝ์šฐ, ++a ๊ฐ€ ๊ณ„์‚ฐ๋˜์–ด a๋Š” 2๊ฐ€ ๋˜๊ณ , ++a์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋กœ 2๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ•˜์ง€๋งŒ a++๊ฐ€ ๊ณ„์‚ฐ๋˜์–ด a์˜ ๊ฐ’์€ 2๊ฐ€ ๋˜์ง€๋งŒ, ์ฆ๊ฐ€๋˜๊ธฐ ์ „ a ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์—ฌ b์˜ ๊ฐ’์ด 1์ด ๋œ๋‹ค.

2.(4) ๋Œ€์ž… ์—ฐ์‚ฐ

๋Œ€์ž… ์—ฐ์‚ฐ์ž๋Š” ์•„๋ž˜ ํ‘œ์™€ ๊ฐ™์œผ๋ฉฐ, ์—ฐ์‚ฐ์ž์˜ ์˜ค๋ฅธ์ชฝ ์‹์˜ ๊ฒฐ๊ณผ๋ฅผ ์™ผ์ชฝ์— ์žˆ๋Š” ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•œ๋‹ค. ๋Œ€์ž… ์—ฐ์‚ฐ์ž์˜ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

int a = 1, b = 3;
a = b;    //b ๊ฐ’์„ a์— ๋Œ€์ž…ํ•˜์—ฌ a=3
a += b;   //a=a+b์˜ ์—ฐ์‚ฐ์ด ์ด๋ฃจ์–ด์ ธ, a=6, b๋Š” 3 ๊ทธ๋Œ€๋กœ

2.(4)-(1) ์˜ˆ์ œ

//๋Œ€์ž… ์—ฐ์‚ฐ์ž์™€ ์ฆ๊ฐ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ•˜๊ธฐ
public class AssignmentIncDecOperator {
    public static void main(String[] args){
        int a=3, b=3, c=3;

        a+=3; //a=a+3 = 6
        b*=3; //b=b*3 = 9
        c%=2; //c=c%2 = 1
        System.out.println("a=" + a + ", b=" + b + ", c=" +c);

        int d=3;

        a=d++;
        System.out.println("a= " + a + ", d=" + d);
        a=++d;
        System.out.println("a=" + a + ", d=" + d);
        a=d--;
        System.out.println("a=" + a + ", d=" + d);
        a = --d;
        System.out.println("a=" + a + ", d=" + d);
    }
}
์‹คํ–‰ ๊ฒฐ๊ณผ
a=6, b=9, c=1
a= 3, d=4
a=5, d=5
a=5, d=4
a=3, d=3

2.(5) ๋น„๊ต ์—ฐ์‚ฐ, ๋…ผ๋ฆฌ ์—ฐ์‚ฐ

๋น„๊ต ์—ฐ์‚ฐ์ž๋Š” ๋‘ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋น„๊ตํ•˜์—ฌ true ๋˜๋Š” false ์˜ ๋…ผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋Š” ์—ฐ์‚ฐ์ž์ด๋ฉฐ, ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋Š” ๋…ธ๋ฆฌ ๊ฐ’์„ ๋Œ€์ƒ์œผ๋กœ AND, OR, XOR, NOT์˜ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์„ ํ•˜์—ฌ ๋…ผ๋ฆฌ ๊ฐ’์„ ๋‚ด๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค.

๋ฐ‘์˜ ํ‘œ๋Š” ๋น„๊ต ์—ฐ์‚ฐ์ž๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

๋ฐ‘์˜ ํ‘œ๋Š” ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ๊ฐ๊ฐ ๋ณด์—ฌ์ค€๋‹ค.

๋น„๊ต ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ๋ณตํ•ฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด์ž.

(age >= 20) && (age <30)  //๋‚˜์ด(int age)๊ฐ€ 20๋Œ€์ธ ๊ฒฝ์šฐ
(c >= 'A') && (c <= 'Z')  //๋ฌธ์ž(char c)๊ฐ€ ๋Œ€๋ฌธ์ž์ธ ๊ฒฝ์šฐ
(x>=0)&&(y>=0)&&(x<=50)&&(y<=50) //(x,y)๊ฐ€ (0,0)๊ณผ (50,50)์˜ ์‚ฌ๊ฐํ˜• ๋‚ด์— ์žˆ์Œ

์œ„์˜ ์ฒซ ๋ฒˆ์งธ ์ฝ”๋“œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฒ”ํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค.

20 <= age < 30 //์˜ค๋ฅ˜

2.(6) ์กฐ๊ฑด ์—ฐ์‚ฐ

์กฐ๊ฑด ์—ฐ์‚ฐ์ž๋Š” ์„ธ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๊ตฌ์„ฑ๋˜์–ด ์‚ผํ•ญ(ternary) ์—ฐ์‚ฐ์ž๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

condition ? opr2 : opr3

2.(6)-(1) ์˜ˆ์ œ

//๋น„๊ต ์—ฐ์‚ฐ์ž์™€ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ•˜๊ธฐ
public class LogicalOperator {
    public static void main(String[] args){
        System.out.println('a'>'b');
        System.out.println(3>=2);
        System.out.println(-1<0);
        System.out.println(3.45<=2);
        System.out.println(3==2);
        System.out.println(!(3!=2));
        System.out.println((3>2)&&(3>4));
        System.out.println((3!=2)||(-1>0));
        System.out.println((3!=2)^(-1>0));
    }
}
์‹คํ–‰ ๊ฒฐ๊ณผ

false
true
true
false
false
false
false
true
true

์•ž์˜ ์‹์—์„œ ์กฐ๊ฑด๋ฌธ condition ์ด true ์ด๋ฉด ์ „์ฒด ์‹์˜ ๊ฐ’์€ opr2 ์˜ ๊ฐ’์ด ๋˜๊ณ , false ์ด๋ฉด opr3 ์˜ ๊ฐ’์ด ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ ๋ฌธ์žฅ์€ x์™€ y ์ค‘ ํฐ ๊ฐ’์„ big ์— ๋Œ€์ž…ํ•˜๋Š” ๋ฌธ์ด๋‹ค.

int x=5, y=3;
int big = (x>y)?x:y; //x๊ฐ€ y๋ณด๋‹ค ํฌ๊ธฐ ๋•Œ๋ฌธ์— x ๊ฐ’ 5๊ฐ€ big์— ๋Œ€์ž…
//์กฐ๊ฑด ์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ•˜๊ธฐ
public class TernaryOperator {
    public static void main(String[] args){
        int a=3, b=5;

        System.out.println("๋‘ ์ˆ˜์˜ ์ฐจ๋Š” " + ((a>b)?(a-b):(b-a)));
    }
}

2.(7) ๋น„ํŠธ ์—ฐ์‚ฐ

๋น„ํŠธ ์—ฐ์‚ฐ์€ ๋น„ํŠธ๋ผ๋ฆฌ AND, OR, XOR, NOT ์—ฐ์‚ฐ์„ ํ•˜๋Š” ๋น„ํŠธ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ๊ณผ ๋น„ํŠธ๋ฅผ ์˜ค๋ฅธ์ชฝ์ด๋‚˜ ์™ผ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ค๋Š” ๋น„ํŠธ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ด ์žˆ๋‹ค.

  • ๋น„ํŠธ ๊ฐœ๋…
    ๋น„ํŠธ ์—ฐ์‚ฐ์ž(oprettor)๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์ „์—, ๋น„ํŠธ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด์ž. ์ปดํ“จํ„ฐ์˜ ๋ชจ๋“  ์ •๋ณด๋Š” 0๊ณผ 1 ๊ฐ’๋งŒ ๊ฐ€์ง€๋Š” 2์ง„์ˆ˜๋กœ ๋‹ค๋ฃจ์–ด์ง€๊ณ  ์ €์žฅ๋œ๋‹ค. 2์ง„์ˆ˜์˜ ํ•œ ์ž๋ฆฌ๋ฅผ ๋น„ํŠธ(bit) ๋ผ ๋ถ€๋ฅด๋ฉฐ, 8๊ฐœ ๋น„ํŠธ๋ฅผ ๋ฐ”์ดํŠธ(byte) ๋ผ๊ณ  ํ•œ๋‹ค. ์‹ญ์ง„์ˆ˜ 10์„ ํ•œ ๋ฐ”์ดํŠธ๋กœ ํ‘œํ˜„ํ•˜๋ฉด 00001010 ์ด๋‹ค.
  • ๋น„ํŠธ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ
    ๋น„ํŠธ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์€ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ ๋น„ํŠธ๋“ค๋ผ๋ฆฌ ์ด๋ฃจ์–ด์ง€๋Š” AND, OR, XOR, NOT์˜ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์œผ๋กœ ์•„๋ž˜ ํ‘œ์™€ ๊ฐ™์ด ์ด 4๊ฐœ์˜ ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ์œผ๋ฉฐ, ์•„๋ž˜ ๊ทธ๋ฆผ์€ ๋น„ํŠธ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์˜ ์‚ฌ๋ก€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

2.(8) ์‹œํ”„ํŠธ ์—ฐ์‚ฐ

์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž(shift operator) ์—ญ์‹œ ๊ฐ ๋น„ํŠธ๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ์—ฐ์‚ฐ์ด ์ด๋ฃจ์–ด์ง€๋ฉฐ ์•„๋ž˜ ํ‘œ์™€ ๊ฐ™์ด 3๊ฐœ์˜ ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ๋‹ค. float, double, boolean ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์—†๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์€ ์—ฌ๋Ÿฌ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์˜ ์‹คํ–‰ ๊ณผ์ •์„ ๋ณด์—ฌ์ค€๋‹ค. >> ์™€ << ๋ฅผ ์ด์šฉํ•˜๋ฉด, ํ•œ ๋ฒˆ ์‹œํ”„ํŠธ ํ•  ๋•Œ๋งˆ๋‹ค ๊ฐ๊ฐ ๋‚˜๋ˆ„๊ธฐ 2, ๊ณฑํ•˜๊ธฐ 2์˜ ํšจ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค.

2.(8)-(1) ์˜ˆ์ œ

//๋น„ํŠธ ์—ฐ์‚ฐ์ž์™€ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ•˜๊ธฐ
public class BitShiftoperator {
    public static void main(String[] args){
        short a = (short)0x55ff;
        short b = (short)0x00ff;

        System.out.println("[๋น„ํŠธ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ]");
        System.out.printf("%04\n", (short)(a&b));
        System.out.printf("%04\n", (short)(a|b));
        System.out.printf("%04\n", (short)(a^b));
        System.out.printf("%04\n", (short)(~a));

        byte c = 20;
        byte d = -8;

        System.out.println("[์‹œํ”„ํŠธ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ]");
        System.out.println(c << 2);
        System.out.println(c >> 2);
        System.out.println(d >> 2);
        System.out.printf("%x\n", (d >>> 2));
    }
}

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ