삼항연산자(Ternary) ? :
형태 : A, B와 자료형이 같은 변수 = (조건식) ? A : B;
특정 조건식을 판별하여 참이면 A를 선택하고, 거짓이면 B를 선택하는 연산자.
삼항연산자는 if문으로 표현할 수 있고, if문은 삼항연산자로 표현할 수 있다.
예)
int a = 10;
String b = (a > 11) ? "a는 11보다 큽니다." : "a는 11보다 작습니다.";
System.out.println(b);
코드 해석
(a>11) 조건식이 참이면 "a는 11보다 큽니다."를 string으로 선언한 변수 b에 넣고,
거짓이면 "a는 11보다 작습니다."를 string으로 선언한 변수 b에 넣음.
int c = 1;
int d = (c ==1) ? 1 : 0;
System.out.println(d);
int e = 10;
char f = (e == 10)? 'A' : 'Z';
System.out.println(f);
논리연산자 : 두 값을 비교하여 boolean형을 결과로 반환한다.
&&, ||, !
&& : and(논리곱) : 주어진 조건들이 모두 true일 때만 true가 됨.
|| : or (논리합) : 주어진 조건들 중 하나라도 true이면 true가 됨.
! : not (부정) : true는 false로, false는 true로 바꿔줌.
사람이 사용하는 가정문과 유사함.
* && AND Logical Operator (논리곱)
true false
true true false
false false false
* || OR Logical Operator (논리합)
true false
true true true
false true false
* not 연산(부정) !
조건1 결과
true false
false true
int a = 10;
boolean b = (a > 1) && (a < 20);
System.out.println(b);
int c = 27;
System.out.println((c > 100) || (c < 50));
boolean d = (a == 10) && (c < 20);
System.out.println(d);
* 문제
99가 2의 배수인지 알아보는 프로그램을 작성하세요.
99가 2의 배수이면 true를 출력, 아니면 false를 출력.
int z = 99;
boolean q = (z%2 == 0);
System.out.println(q);
* 문제
33이 3의 배수이거나 4의 배수인지 알아보는 프로그램을 작성하세요.
33이 3의 배수이거나 4의 배수이면 true를 출력, 아니면 false를 출력.
int y = 33;
boolean k = ((y % 3 == 0) || (y % 4 == 0));
System.out.println(k);
* 문제
32가 3의 배수이거나 4의 배수인지 알아보는 프로그램을 작성하세요.
32가 3의 배수이고, 4의 배수이면 true를 출력, 아니면 false를 출력.
int x = 33;
boolean l = ((x % 3 == 0) && (x % 4 == 0));
System.out.println(l);
비트 연산자 : 두 값의 비트(bit)를 대상으로 연산을 하여 값을 반환.
&, |, ~, ^
& : 비트 단위의 and (논리곱)
| : 비트 단위의 or (논리곱)
~ : 비트 단위의 not (부정, 비트반전)
^ : 배타적 or (XPR, exclusive or) 두 값이 같으면 0, 두 값이 다르면 1을 반환
* & : AND Logical Operator (논리곱)
true false
true 1 0
false 0 0
* || : OR Logical Operator (논리합)
true false
true 1 0
false 1 0
* ^ : XOR Logical Operator (배타적 논리합)
: 입력 중 하나만 참이면 참이고, 상호 배타적으로 입력이 동일하면 0을 출력.
true false
true 0 1
false 1 0
// 0000 0000 0000 0000
// 0000 0000 0000 0000
// 0000 0000 0000 0000
// 0000 0000 0000 0010
// 비트반전
// 1111 1111 1111 1111
// 1111 1111 1111 1111
// 1111 1111 1111 1111
// 1111 1111 1111 1101 >> -3
shift 연산자 : 주어진 값의 각 비트(bit)를 오른쪽 또는 왼쪽으로 이동시킴
<<, >>, >>>
<< : 왼쪽으로 이동. 최하위 비트는 0으로 채움. 산술적 왼쪽 시프트
>> : 오른쪽으로 이동. 최상위 비트는 그 전의 비트로 채움. 산술적 오른쪽 시프트
>>>: 오른쪽으로 이동. 최상위 비트는 0으로 채움. 논리적 오른쪽 시프트
형태: >> 숫자, << 숫자
int a = 2;
int b = 2 << 2;
System.out.println(b);
2 = 0010 ----두칸밀면 1000
int d = -1;
System.out.println(d << 1);
System.out.println(d >> 1);
System.out.println(d >>> 1);
System.out.println(" ");
int e1 = -5;
int e2 = e1 >>1;
int e3 = e1 >>>1;
System.out.println(e2);
System.out.println(e3);
연산자 우선 순위
* 연산자
* 증감(++,--), 부호(+,-), 논리(!) 높음
* 산술(*,/,%)
* 산술(+,-)
* 시프트(<<,>>,>>>)
* 비교(<,<=,ㅡ>,>=, instance of)
* 비교(==, !=)
* 논리(&)
* 논리(^)
* 논리(|)
* 논리(&&)
* 논리(||)
* 삼항(?:)
* 대입(=,+=,-=,*=,/=,%=) 낮음
&=, ^=, |=, <<=, >>=, >>>=
이런 연산자도 있는데 사용하지 말것
사용하는 사람 없음ㅇㅅㅇ
int h = 10;
String i = (h==10)? "a는 10":"a는 10 아님";
if문 : ~라면 ~해라.
형식 : if(조건) { 실행할 내용; }
int a = 10;
if(a < 11)
{
System.out.println("a는 11보다 작습니다.");
}
int b = 20;
if (b > 8) {
System.out.println("b는 8보다 큽니다.");
}
int c = 10;
if(c < 13) {
System.out.println("c는 13보다 작습니다.");
}
if ~ else문
형식 :
if(조건) { 실행할 내용; }
else { 실행할 내용; }
else문 : if문에 명시된 조건 이외의 모든 조건에서 실행됨
그래서 else문에는 조건이 붙지 않음
else문은 있어도 되고, 없어도 된다.
삼항연산자는 if~else문으로, if~else문은 삼항연산자로 바꿀 수 있다.
int aa = 10;
if(aa < 11) {
System.out.println("aa는 11보다 작습니다.");
}
else {
System.out.println("aa는 11보다 큽니다.");
}
if ~ else if ~ else문
형식:
if(조건) { 실행할 내용; }
else if(조건) { 실행할 내용; }
else if(조건) { 실행할 내용; }
else if... (else if문은 몇번이든 사용할 수 있음)
else {실행할 내용;}
특징 :
if문에서 걸러진 결과는 제외하고 else if 문에서 걸러줌
else if문에서 걸러진 결과는 제외하고 그 아래 else if 문에서 걸러줌
... 계속 반복해서 내려가서 마지막 else문에서, 걸러지지 않고 남은 모든 조건에서 실행됨
int d = 10;
if(d > 20) {
System.out.println("d는 20보다 큽니다.");
}
else if(d > 15) {
System.out.println("d는 15보다 큽니다.");
}
else if(d > 9) {
System.out.println("d는 9보다 큽니다.");
}
else if(d > 15) {
System.out.println("d는 15보다 큽니다.");
}
else {
System.out.println("d는 9보다 작습니다.");
}
* 문제
c에 들어 있는 글자가 F이면 "여성입니다"를 출력하고
아니면 "남성입니다"를 출력하는 프로그램을 작성하세요
if문과 else문을 사용하시면 됩니다.
char c = 'F';
if (c == 'F')
{System.out.println("여성입니다");}
else
{System.out.println("남성입니다");}
삼항연산자
String l = (c=='F') ? ("여성입니다.") : ("남성입니다.");
System.out.println(l);
System.out.println((c=='F') ? "여성입니다.":"남성입니다.");
}
import java.util.Scanner;
public class scannerEx01 {
public static void main(String[] args) {
Scanner : 스캐너 클래스
자바에서 화면에 키보드로 키를 입력받을 수 있는 클래스이다.
스캐너를 사용하려면 import java.util.Scanner; 가 필요하다.
위치는 package 와 class 사이.
숫자를 하나 입력하고 출력해보기.
Scanner sc = new Scanner(System.in);
sc변수. 스캐너 클래스로 만든 변수이고, 스캐너로 만든 변수는
스캐너 클래스가 가지고 있는 모든 기능을 사용할 수 있음
스캐너로 입력을 받아보자
문자, 숫자 아무거나 ok
System.out.println("숫자를 입력하세요."); int a = sc.nextInt();
System.out.println(a);
System.out.println("숫자를 입력하세요."); float b = sc.nextFloat());
System.out.println(b);
System.out.println("숫자를 입력하세요."); long c = sc.nextLong());
System.out.println(c);
System.out.println("숫자를 입력하세요."); double d = sc.nextDouble());
System.out.println(d);
당연히 string도 가능
System.out.println("글을 입력하세요.");
String s = sc.nextLine();
System.out.println(s);
* 문제
int형 변수 두 개를 선언하고, 정수를 입력받아,
이 변수 두 개를 비교하여 값이 같으면 same을 출력하고,
같지 않으면 not same을 출력하는 프로그램 작성
조건 : if문을 사용하세요.
Scanner sc = new Scanner(System.in);
1. 정수형 변수를 선언.
2. 그 변수에 스캐너를 사용해서 정수 입력
3. if문으로 비교
4. 결과 출력
System.out.println("a값을 입력하세요");
int a = sc.nextInt();
System.out.println("b값을 입력하세요");
int b = sc.nextInt();
if (a == b) {System.out.println("same");}
else {System.out.println("not same");}
삼항으로 표현시
String s = (a==b) ? "same" : "not same";
System.out.println(s);
* 문제
정수를 하나 입력받아, 입력받은 숫자가 양수인지 음수인지
판별하는 프로그램을 작성하세요.
양수이면 "양수", 음수이면 "음수", 0이면 0을 출력합니다.
조건 : else if문 사용하지 마세요. if문안에 if문을 사용하세요.
Scanner sc = new Scanner(System.in);
System.out.println("정수를 입력하세요ㅇㅅㅇ");
정수형 변수 선언 및 스캐너로 입력
if문으로 판별
int a = sc.nextInt();
if (a >= 0)
{if (a == 0) {System.out.println("0");}
else {System.out.println("양수");};}
else {System.out.println("음수");}
'IT 공부 > Java' 카테고리의 다른 글
기본요소, datatype, 연산자 (0) | 2022.06.22 |
---|---|
기초 0611 (0) | 2022.06.11 |
기초1 (자료형, 변수, 연산자) (0) | 2022.05.29 |
변수 (0) | 2022.05.15 |
이클립스 단축기 (1) | 2022.05.15 |