본문 바로가기

Java/이론

[Java] 삼항 연산자

연산자는 항의 개수에 따라서 나뉩니다.

 

단항 연산자 :  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