평행코드

Java 형 변환, 사용자로부터 값을 입력 받는 Scanner 본문

Java

Java 형 변환, 사용자로부터 값을 입력 받는 Scanner

나의 오류는 누군가 겪었던 오류 2023. 8. 29. 23:10

형변환

값의 자료형을 바꾸는 것


- 컴퓨터의 값 처리 원칙
같은 종류 자료형만 대입 가능
같은 종류 자료형만 계산 가능
계산의 결과도 같은 종류의 값이 나와야 함

- 강제형변환
-> 개발자가하는것
값의 범위가 큰 자료형을 값의 범위가 작은 자료형으로 변환
강제 형 변환 시 데이터 손실이 발생할 수 있음
데이터의 변형, 손실을 감수

 

- 자동형변환
-> 컴파일러가 알아서 해주는것
컴파일러가 자동으로 값의 범위가 작은 자료형을 값의 범위가 큰 자료형으로 변환
예시) int + double => double

int iNum1 = 10;
int iNum2 = 4;
float fNum = 3.0f;
double dNum = 2.5;
char ch = 'A';

System.out.println( iNum1 / iNum2 ); // 2
System.out.println( (int)dNum ); // 2
System.out.println( iNum2 * dNum ); // 10.0
System.out.println( (double)iNum1 ); // 10.0
System.out.println("====================");
System.out.println( ((double)iNum1 / iNum2) ); // 2.5
System.out.println( dNum ); // 2.5
System.out.println( (int)fNum ); // 3
System.out.println( (int)(iNum1 / fNum) ); // 3
System.out.println( iNum1 / fNum );// 3.3333333
System.out.println( ((double)iNum1 / fNum) ); // 3.3333333333333335
System.out.println("====================");
System.out.println( ch ); // 'A'
System.out.println( (int)ch ); // 65
System.out.println( (int)ch + iNum1 ); // 75
System.out.println( (char)(ch + iNum1) ); // 'K'

 

자료형

기본자료형 -> int, double, char, byte, boolean
: 원본값을 이진수로 저장함
실수를 표현하는 녀석들은 계산식에 들어가는 피연산값을 저장한다.
지수부와 가수부로 나누어서 저장함


참조형자료형 -> String, 클래스명{ }

 

 Scanner

사용자로부터 입력되는 정수, 실수, 문자열을 처리하는 클래스
- import 작성
import.util.Scanner;


- Scanner 생성
Scanner sc = new Scanner(System.in);


- 키보드 입력 값 받기
정수 : sc.nextInt();
실수 : sc.nextFloat(); 또는 sc.nextDouble();
문자열 : sc.next(); 또는 sc.nextLine();

 

변수와 메모리 구조

Static : static예약어로 선정된 필드, 메소드가 저장되는 공간 (클래스변수등)
-> 공용의영역 heap,stack에서 접근해 사용가능


Heap : 런타임중에 new연산자에 의해 동적으로 할당하고 저장되는 공간, 객체, 배열 등
-> 개발자가 삭제할때까지 남아있음, 자바는 GC가비지컬렉터가 자동으로 삭제해줌


Stack : call 스택이라고도함 main의 스택이 열리면서 메인메소드안에 영역이 생성됨
(지역변수, 매개변수, 메소드호출스택등)
메인이끝나면 자동으로 소멸 (자동생성자동소멸)

 

출력 메소드

- System.out.println()
자동 줄바꿈


- Syste m.out.printf() 
정해져 있는 형식에 맞춰서 그 형식에 맞는 값(변수)을 줄바꿈 하지 않고 출력

 

printf의 f : format형식
%d : 정수형, %o : 8진수, %x : 16진수
%c : 문자, %s : 문자열, %f : 실수, %e : 지수형태표현, %g : 대입값 그대로

ex)
- %5d : 5칸을 확보하고 오른쪽 정렬
- %-5d : 5칸을 확보하고 왼쪽 정렬
- %2.f : 소수점 아래 2자리까지만 표시

 escape 문자

\t : 정해진 공간만큼 띄어쓰기 4칸만큼
\n : 출력하고 다음라인으로 옮김
\' , \" : 특수문자 사용시 백슬러시(\)를 넣고 특수문자를 넣어야 함