연산자는 항의 개수에 따라서 나뉩니다.
단항 연산자 : a++, a --, !a, ...
이항 연산자 : a + b, a > b, ...
삼항 연산자 : a + b == 1 ? 1 : 2
조건을 따져서 값을 대입할 때 사용하고
if문으로 대체가 가능합니다.
하지만 if 문은 문법이 길어진다는 단점이 있습니다.
삼항 연산자를 사용하면 코드를 줄일 수 있습니다.
형식은
조건식 ? 조건을 만족할 때 쓸 값 : 조건 불성립시 쓸 값
입니다.
예를 들면
int age = 25;
System.out.println((age > 20) ? "안녕하세요" : "NAGA!");
이런식입니다.
age가 20 보다 크다면 "안녕하세요"
아니면 "NAGA!"를 출력합니다.
if문으로 썼을 시
if(age >20) { System.out.println("안녕하세요" "); }
else{ System.out.println(" NAGA! "); }
코드가 두 줄로 길어지는 것을 볼 수 있습니다.
한가지 배운 점은 처음에는
(age > 20) ? System.out.println("안녕하세요"); : System.out.println ( "NAGA!");
이렇게 코딩 했었는데
삼항연산자는 참 / 거짓에 따라 코드를 실행하는 것이 아니라
값이 반환되기 떄문에 위 코드는 실행이 되지 않았습니다.
즉 위에처럼
(age > 20) ? "안녕하세요" : "NAGA!"
와 같이 age의 값에 따라 "안녕하세요" 혹은 "NAGA!"를 반환합니다.
그래서 출력하려면 위의 값을 그대로 출력문에 넣던가
변수에 넣어서 출력하면 됩니다.
다음 실습은 이름과 나이에 따라 강의실을 나눠서 보내는 것이었는데요.
System.out.println("이름은 : " + name);
System.out.println("나이는 : " + age);
System.out.println((age > 20) ? "안녕하세요" : "NAGA!");
System.out.println(name.equals("홍길동")? "1강의장으로 가세요" : "2강의장으로 가세요"); //이름이 홍길동이면 1강의장
System.out.println((age % 2 == 0) ? "1강의장으로 가세요" : "나머지는 2강의장으로 가세요"); //나이가 짝수이면 1강의장
System.out.println( !(name.equals("홍길동") && (age % 2 == 0))? "나머지 분들은 2강의장으로 가세요" : "강의실 헷갈리셨나요" ); // 나머지 사람들은 2강의장
}
저는 이렇게 작성했는데 강사님은 한 줄로 표현하셨습니다.
System.out.println( !(name.equals("홍길동") || (age % 2 == 0))? "1강의장으로 가세요." : "2강의장으로 가세요." );
유의할 점은 문자열의 동일한지 비교는 equals 기능을 써야된다는 점과
짝수는 (입력받은 수 % 2 == 0)를 사용한다는 점입니다.
이 부분은 경험이 있어서 수월하게 수행한 것 같습니다.
하지만 나머지 사람들은 2강의장으로 보내는 부분에서
false일 때 출력하는 부분이 애매했는데
역시 강사님이 요구하시는 코드랑 달랐습니다.
좀 더 신중하게 고민하면서 코딩해야 할 것 같습니다.
다음 실습은
Q 상자 하나에 축구공이 6개 들어갈 수 있을 때, 공의 갯수를 입력 받아서 공을 모두 담을 수 있는 상자의 갯수를 출력하라
였습니다.
System.out.println("공의 개수는?");
int ball = sc.nextInt();
int box = ((ball % 6 == 0) ? ball / 6 : (ball / 6) + 1 );
System.out.println("필요한 상자의 개수는? " + box);
△작성한 코드
핵심은 공을 담고 상자에 나머지가 있을 때 상자 한 개를 더 써야 한다는 점 입니다.
즉 나머지가 있으면 상자를 6으로 나눈 갯수에 한 개를 더 써야하고
나머지가 없으면 6으로 나눈 갯수를 사용하면 됩니다.
이번 시간에는 삼항 연산자에 대해서 공부해봤는데요.
조건문을 짧게 쓸 수 있다는 점이 상당히 메리트가 있었고,
참 / 거짓에 따른 코드를 실행하는 것이 아닌
값을 반환하는 점을 주의해서 사용하면 좋을 것 같습니다.
감사합니다!
'Java > 이론' 카테고리의 다른 글
[Java] 함수 (Function) (0) | 2024.11.22 |
---|---|
[Java] Random 기능 (0) | 2024.11.22 |
[Java] Shift 연산자 (0) | 2024.11.22 |
[Java] Operator - 연산자 (0) | 2024.11.21 |
[Java] 자바 개발 효율을 높이는 단축키와 출력 방법 (0) | 2024.11.21 |