초급의 끄적거림

[JAVA] 자료형 변환 Datatype Conversion (자동형, 강제형 변환, 아스키 코드) 본문

JAVA

[JAVA] 자료형 변환 Datatype Conversion (자동형, 강제형 변환, 아스키 코드)

codingD 2019. 8. 19. 12:39

[자료형 변환] 

 ⊙ Datatype Conversion

 ⊙ 자동형 변환, 강제형 변환(= cast 변환)

 

 1) 자동형 변환

   ⊙ byte < short < int < long

   ⊙ float < double

   ⊙ 정수형이 실수형을 따라간다

byte a=3;
int b=a; //b 값에 a 를 전달하는 것, 작은 byte가 큰 집인 int로 들어가는 것은 문제 없음. 결론적으로 b 값은 3
System.out.println(a);  //3
System.out.println(b);  //3

long c=5;
  // int d=c;  큰 long이 작은 int 로 들어가는 일은 에러 발생.
  System.out.println(c);
			
float e = 1.2f;
double f=e;  //이건 가능하지만 반대는 불가, <자동형 변환>
             // e=f; 불가능 
System.out.println(f);

double g=3;
System.out.println(g); //3.0 - 정수형에 double을 붙이면 .0을 붙여서 실수화

 

 

 2) 강제형 변환 (cast 연산자)

   ⊙ 필요한 곳에서 일시적으로 변환

   ⊙ (자료형)값

   ⊙ double형인지 float 형인지 알려주지 않은 경우, 대체로 double 형으로 인식, int와 double 형이 기본

System.out.println((int)3.5);  
//3, 실수이지만 int가 붙으면서 뒤에 있는 소수점이 안나옴

System.out.println((double)4); 
//4.0 , 정수이지만 실수의 명령어 double이 쓰이면서 소수점까지 사용됨

System.out.println((int)2.6+(int)5.7);   //2+5 = 7
System.out.println((int)(2.6+5.7));      //8.3 → 8

 

 

 3) int형과 char형과의 형변환

   ⊙ ASCII코드, ASCII 문자 (ASCII : 아스키)

System.out.println(65);
System.out.println((char)65);  //A로 뜨지만 'A'라는 의미로 사용된 것
System.out.println((char)66);  //'B'
System.out.println((char)67);	 //'C'
		
System.out.println((char)97);  //'a' 
System.out.println((char)98);  //'b'
		
System.out.println((int)'A');  //65
System.out.println((int)'a');  //97
		
System.out.println((int)'+');  //43, 캐릭터형 더하기
System.out.println((int)' ');   //32 공백
System.out.println((int)'\r');  //13 엔터, 공백과 함께 자주 쓰임
		
System.out.println('A'-'a');  //65-97= -32
System.out.println("#"+(char)('b'-'B')+"#"); //#(98-66)# → #32# → # (공백) # 	

 

 예제)

int a=3, b=5;
char op='+';

System.out.println(a+op+b+'=' + (a+b));  
//+의 아스키코드값 : 43
                // 3+43+5=8

System.out.println(a+""+op+""+b+"="+(a+b));
                 //3+"+"+5=8  
Comments