IT 공부/Java

기초2

toraa 2022. 6. 4. 16:50

삼항연산자(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