2020년 10월 08일

업데이트:


Scanner로 여러가지 타입 입력받기

import java.util.Scanner;

(생략)

Scanner sc = new Scanner(System.in);

//정수 입력받기
int num = sc.nextInt();

//실수 입력받기
float Float = sc.nextFloat();
double Double = sc.nextDouble(); // double이 실수의 기본형이므로 double을 주로 사용함

//문자열 입력받기
String st = sc.next();  //띄어쓰기나 엔터 전까지의 문자열만 대입
String st2 = sc.nextLine(); //엔터 전까지의 문자열만 대입

//문자 입력받기
//char형은 따로 nextChar()와 같은 메소드가 없다.
char ch = sc.next().charAt(0);


Scanner의 문제점

nextLine()의 경우 \n인 개행문자 전까지만 입력받은 문자열을 변수에 대입한다. 그래서 nextInt()나 nextDouble()과 같이 사용할 때 문제가 나타날 수 있다.

(생략)
int num = sc.nextInt();
String st = sc.nextLine();

//출력
//123

정수형으로 입력받은 후 버퍼에 숫자를 제외한 \n이 남아있기 때문에 문자열을 입력받지 않고 123만 입력받고 프로그램이 끝나버린다. 이럴경우 해결 방법은 다음과 같이 추가로 코드를 넣어주면 된다.

int num = sc.nextInt();
sc.nextLine(); // \n 제거
String st = sc.nextLine();



형변환(casting)

자동 형변환


컴파일러가 자동으로 값의 범위가 작은 자료형을 값의 범위가 큰 자료형으로 변환한다.

int num = 100;
double Double = 123.5;

System.out.println(num + Double);

//출력 결과
//223.5

/*자동형변환 과정
1. int형인 num 안의 값을 double로 형변환한다.
   num = 100.0
2. 형변환 된 num과 Double의 값을 더한다.
   100.0 + 123.5
* 이 모든 과정은 컴파일러가 자동으로 변환해준다.
*/


강제 형변환

강제 형변환은 자동 형변환과는 다르게 값의 범위가 큰 자료형을 값의 범위가 작은 자료형으로 변환한다. 다만, 강제 형변환 시 데이터 손실이 발생할 수 있으니 유의해야 한다.

//double -> int
//소수점 부분은 버리고 정수 부분만 가져온다.
int num = 100;
double Double = 123.1;
		
System.out.println(num + (int)Double); // 223

//byte, short 자료형 연산 시 유의할 점
byte num1 = 1;
byte num2 = 2;
// byte num3 = num1 + num2;  -> 에러!
// num1, num2에 저장된 값이 int의 리터럴 표기법이기 때문에 다음과 같이 작성해야한다.
byte num3 = (byte)(num1 + num2);



Overflow

오버플로우는 데이터 연산 처리 시 자료형의 값의 범위를 초과하는 경우에 발생한다.
그림_C언어코딩도장

//byte의 값의 범위는 -128 ~ 127
byte num1 = 127;
byte num2 = (byte)(num1 + 1);
byte num3 = -128;
byte num4 = (byte)(num3 - 1);
		
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
System.out.println(num4);

/* 출력
127
-128
-128
127
*/
// 최대값 초과 시 -> 최소값
// 최소값 초과 시 -> 최대값



연산자

연산자 우선순위

프로그래머스_표

논리 부정 연산자

//논리 부정 연산자
boolean bl = true;
System.out.println(!bl); //false

// true -> flase
// false -> true


증감 연산자

  • 전위 연산자 : 전위 연산자의 경우 먼저 증감 연산 실행 후 다른 연산을 실행
  • 후위 연산자 : 후위 연산자의 경우 다른 연산 먼저 실행 후 증감 연산 실행
int num = 10;
num--;
System.out.println(num); //9
--num;
System.out.println(num); //8
// 단항 연산일 경우 전위, 후위 상관 없음(조건문 제외)

// 후위 연산자
int num = 10;
System.out.println(num++);
System.out.println(num++);
System.out.println(num++);
System.out.println(num++);
System.out.println(num++);
System.out.println("num : " + num);
/* 출력
10
11
12
13
14
num : 15
*/


// 전위 연산자
int num = 10;
System.out.println(++num);
System.out.println(++num);
System.out.println(++num);
System.out.println(++num);
System.out.println(++num);
System.out.println("num : " + num);
/*
11
12
13
14
15
num : 15
*/

태그:

카테고리:

업데이트:

댓글남기기