본문 바로가기
Algorithm/코드업 100제

코드(100제) JAVA - 1023 [기초-입출력] 실수 1개 입력받아 부분별로 출력하기 그리고 타입변환

by telecaster0 2021. 11. 21.
  Scanner sc= new Scanner(System.in);
  //실수 입력
  double testNumber = sc.nextDouble();
  //double(실수)=>int(정수) 형 변환
  int testNumber2= (int)testNumber;
  System.out.println(testNumber2);
  //split으로 나누면 배열로 알아서 담김. String 아님! 그리고 정수부분과 소수부분을 .을 기반으로 나눠서 배열에 담음.
  String splitNumberArray[]=(testNumber+"").split("\\.");
  //0번지는 정수 1번지는 소수점   
  String splitNumber=splitNumberArray[1];
  System.out.println(splitNumber);

실수를 입력받아

1)int로 강제 타입 변환을 통해 정수부분만 출력

2)정수이후 소수 부분을 "."(닷)으로 스플릿하여 변수에 담아 출력

 

형변환은 큰범위에서 작은범위는 간단한 선언, 할당을 통해 변환되지만 그 이외엔 강제변환을 시켜야 한다. 

 

  • 자동 타입 변환

큰 허용 범위 타입 = 작은 허용 범위 타입   작성해주면 자동으로 변환이 된다.

int var1 = 2;

dobule var2 = a;
//큰 범위     작은범위​

 

 

또한 char타입도 변경이 되는데 char 타입을 int로 변환할 경우 유니코드 값이 int 타입에 저장된다.

char var1 = 'A';
int var2 = var1;

//var2==65​

하지만! byte타입으로 변환은 안된다! byte는 char보다 작은타입이지만 char는 음수를 미포함, byte는 음수를 포함하기 때문이다.

 

\

  • 강제 타입 변환

작은 허용 범위 타입 = (작은 허용 범위 타입) 큰 허용범위 타입

double var1=2.5;

int a=(int)var1;
//double=>int로 타입 변환. int는 정수만 포함하기에 2만 담긴다.

첫번째 코드의 5번째줄에서  큰 허용범위에서 작은범위로 타입을 변환해주는데 위에 설명한것 처럼 작은타입에서 큰 타입은 선언으로 자동변환되지만 그렇지 않은경우 강제 변환을 해주어야 한다.