JAVA ๊ณต๋ถํ๊ธฐ(3) ๐ง๐ปโ๐ป
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));
}
}
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(JAVA ๊ณต๋ถํ๊ธฐ(3) ๐ง๐ปโ๐ป), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@kimku1018/JAVA-๊ณต๋ถํ๊ธฐ3์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค