220603 TIL

Yeoni·2022년 6월 5일
0

국비교육TIL

목록 보기
4/41

국비교육 4일차 JAVA : 연산자, Scanner

1. 연산자

1) 증감연산자

  • ++ , --
  • 후위증감연산자(a++; b--;) 는 다른 연산을 다 마친 이후에 1씩 증감한다.
  • 전위증감연산자(++a; --b;) 는 맨 먼저 1씩 증감을 마친 이후에 다른 연산을 한다.
int x=5, y=5;
int z=++x;	// ++x; x=x+1; x=6; z=x; z=6;
System.out.println("z => " + z); 	// z => 6
System.out.println("x => " + x);	// x => 6

z=y++;		// z=y; z=5; y++; y=y+1; y=6;
System.out.println("z => " + z);	// z => 5
System.out.println("y => " + y);	// y => 6

2) 논리 부정 연산자

  • !(not)
boolean bool = false;
System.out.println("bool : " + bool); 	// bool : false
System.out.println("!bool : " + !bool); 	// !bool : true

3) 논리 연산자

  • &, |, &&(and), ||(or)

  • &&와 ||은 값이 나오면 그 이후의 계산 값은 스킵이 가능하다.
// --- && || 예시 --- 

int c=10, d=20, e=30;

bool = (c > d) && (d < e) && (c == 3);
	//  fasle  &&  skip   &&   skip  
    // 어차피 시작부터 false 이기 때문에 뒤는 스킵
System.out.println("bool => " + bool);		// bool => false

bool = (c > d) || (d < e) || (c == 3);
	//  false  ||  true   ||  skip 	
    // true가 나오면 무조건 true 라서 이후는 스킵
System.out.println("bool => " + bool);		// bool => true
  • &와 |은 값이 나와도 스킵이 불가능하다.
// --- & | 예시 ---

int c=10, d=20, e=30;

bool = (c > d) & (d < e) & (c == 3);
	//  fasle  &  true   &   false  
    // & 하나는 스킵을 하지 못함. 따라서 속도가 상대적으로 느리게 됨.
System.out.println("bool => " + bool);		// bool => false

bool = (c > d) | (d < e) | (c == 3);
	//  false  |  true   |   false 	
    // | 하나는 스킵을 하지 못함.
System.out.println("bool => " + bool);		// bool => true

4) 비교 연산자

  • a == b : a와 b가 같다
  • a != b : a와 b가 같지 않다
  • a > b : a가 b보다 크다
  • a < b : a가 b보다 작다
  • a >= b : a가 b와 같거나 b보다 크다
  • a <= b : a가 b와 같거나 b보다 작다

5) 할당 연산자(연산 후 대입 연산자)

  • += -= *= /= %=
int no = 1;
no += 5;  	// no = no + 5; 와 같은 것이다. 
System.out.println("no="+no);	// no=6;
		
no -= 3;  	// no = no - 3; 와 같은 것이다. 
System.out.println("no="+no);	// no=3;	
		
no *= 5;  	// no = no * 5; 와 같은 것이다. 
System.out.println("no="+no);	// no=15;
		
no /= 5;  	// no = no / 5; 와 같은 것이다. 
System.out.println("no="+no);	// no=3;
		
no %= 4;  	// no = no % 3; 와 같은 것이다. 
			// %= 는 나머지를 뜻한다.  
System.out.println("no="+no);	// no=3;

6) 삼항 연산자

  • 변수선언 = (조건식)? 값1:값2;
  • 변수를 선언하고 나서 값을 부여할 때 사용되어지는데, 조건식이 참이라면 변수에 값1을 대입해주고, 조건식이 거짓이라면 변수에 값2를 대입해준다.
int num1 = 7, num2 = 10;
int num3 = (num1 > num2)? num1:num2;
		
System.out.println("num3 => " + num3);  // num3 => 10

2. Scanner

1) Scanner 객체 생성

  • 객체를 생성하면서 Scanner 클래스를 import 해주어도 되며 직접 import문을 작성하여도 된다.
	import java.util.Scanner;
  • Scanner의 경우에는 객체를 생성할 때 System.in(입력장치/키보드)이 들어간다. System.out은 출력장치(모니터)를 말한다.
	Scanner scan = new Scanner(System.in);
  • Scanner 종료
    종료하지 않으면 계속해서 돌아가고 있게 된다.
	scan.close();

2) Scanner의 메소드

  • nextLine
    scan.nextLine(); 은 키보드로부터 입력 받은 문장을 읽어들이는 것인데 엔터(종결신호)까지 모두 읽어들인 후 스캐너 버퍼에 아무것도 남기지 않는다.
	System.out.print("문장을 입력하세요 => "); 
	String inputStr = scan.nextLine();
	System.out.println(">> 입력한 문장 => " + inputStr); 
  • nextInt
    scan.nextInt(); 는 정수(int)를 읽어들이는 것인데 종결자가 공백 또는 엔터이다. 종결자(공백 또는 엔터) 앞까지의 입력해준 정수를 읽어온다. scan.nextInt();을 사용하면 스캐너(sc) 버퍼에는 종결자(공백 또는 엔터)가 삭제되는 것이 아니라 그대로 남아있게 된다. 이를 방지하고자, scan.nextLine(); 을 이용하여 스캐너 버퍼에 남아있는 것을 제거해 주어야 한다.
	System.out.print("첫번째 정수를 입력하세요. => ");
	int inputNum_1 = scan.nextInt();
	scan.nextLine();
	System.out.println(">> 첫번째 입력한 정수 " + inputNum_1);
  • nextDouble
    scan.nextDouble(); 는 실수(double)를 읽어들이는 것인데 종결자가 공백 또는 엔터이다. 종결자(공백 또는 엔터) 앞까지의 입력해준 실수를 읽어온다.
	System.out.print("첫번째 실수를 입력하세요. => ");		
	double inputDbl_1 = scan.nextDouble();
	scan.nextLine();
	System.out.println(">> 첫번째 입력한 실수 " + inputDbl_1);
  • next
    scan.next(); 는 단어를 읽어들이는 것인데 종결자가 공백 또는 엔터이다. 종결자(공백 또는 엔터) 앞까지의 입력해준 문자열을 읽어온다.
	System.out.print("첫번째 단어를 입력하세요. => ");	
	String inputWord_1 = scan.next();
	scan.nextLine();
	System.out.println(">> 첫번째 입력한 단어 : " + inputWord_1);
  • nextLine의 경우에는 엔터를 기준으로 버퍼에 아무것도 남아있지 않지만, next, nextInt, nextDouble 등은 버퍼에 종결자가 삭제되는 것이 아니라 그대로 남아있기 때문에 scan.nextLine(); 으로 버퍼를 비워주어야 한다.
profile
이런 저런 기록들

0개의 댓글