달력

12

« 2019/12 »

  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  


 

변환(Type Conversion)

·       초기화 시에만 변환 적용됩니다.

·       하나의 타입을 다른 타입으로 바꾸는 것을 의미합니다.

·       타입 변환이라고도 합니다.

 

 

 

 

변환(Type Conversion) 종류

기본 자료형 값을 다른 자료형으로 변환할 있는 기능을 의미하며 가지 종류가 있습니다.

boolean형을 제외한 나머지 기본 타입 간의 타입 변환을 자유롭게 수행할 있습니다.

·       프로모션(promotion)

·       디모션(demotion)

 

 

 

 

 

프로모션(promotion)

·       자료형으로 변환

·       작은 자료형 -> 자료형

·       대입 연산자에서 왼쪽의 자료형이 오른쪽 결과의 자료형보다 발생합니다.

·       정보의 손실 없음

·       내부적으로 자동으로 형변환을 수행합니다.(자동 형변환; 묵시적 형변환; Implicit Type Conversion)

short s=7;

float f = s + 3.14f;

 

 

 

산술연산식에서 자동 형변환

산술연산식

연산 결과

정수 산술연산자 문자

정수

정수 산술연산자 정수

정수

정수 산술연산자 실수

실수

실수 산술연산자 정수

실수

실수 산술연산자 실수

실수

 

 

 

 

 

 

 

디모션(demotion)

·       작은 자료형으로 변환

·       자료형 -> 작은 자료형

·       경우에 따라 정보의 손실 발생

·       사용자가 형변환을 직접 지정합니다.(명시적 형변환; Explicit Type Conversion)

int i = 0;

short s=10;

i = (int)(10 + 3.5f);

 

 

 

명시적 형변환

·       자동 변환 발생지점을 표시하기 위해서 사용(의도한 변환임을 표시)

·       자동 변환의 규칙에 위배되지만 변환 필요한 상황에 사용(디모션)

·       중괄호 사용하여 표현하며 괄호를 타입 캐스트(type cast) 연산자라고 합니다.

 

(자료형)

(자료형)수식

 

 


Posted by codedragon codedragon

댓글을 달아 주세요

   

   

자바의 자동 형변환 규칙(Implict Conversion)

값의 표현 범위로 자동 형변환됩니다.


   

 

double num = 3.14f + 10;

//10 10F 자동 형변환

 


Posted by codedragon codedragon

댓글을 달아 주세요

형 변환

 

   

소스코드

  1. public class OperatorEx03 {
  2.         public static void main(String[] args){
  3.                  
  4.                 // 변환
  5.                  
  6.                 int a = 10;
  7.                 float b = 10.0F;               
  8.                 // int == float
  9.                 if( a == b){    // int -> float (10 -> 10.0F)
  10.                          
  11.                         System.out.println("a b 같다.");
  12.                         System.out.println("a : " + a);
  13.                         System.out.println("b : " + b);
  14.                 }
  15.                  
  16.                  
  17.                 System.out.println("");
  18.                 char c ='0';
  19.                 int d = 0;
  20.                 //char != int
  21.                 if(c != d){             //char -> int ('0' -> 48)
  22.                         System.out.println("c d 같지 않다.");
  23.                         System.out.println("c : " + c);
  24.                         System.out.println("d : " + d);                
  25.                 }
  26.                  
  27.                  
  28.                 System.out.println("");
  29.                 //char == int
  30.                 char e = 'A';
  31.                 int f= 65;
  32.                 if( e == f){    //char -> int ('A' -> 65)
  33.                         System.out.println("e d 같다.");
  34.                         System.out.println("e : " + e);
  35.                         System.out.println("f : " + f);
  36.                 }
  37.                  
  38.         }
  39.    
  40. }

 

 

   

출력결과 

   

'Development > Java' 카테고리의 다른 글

OperatorEx04.java-논리 연산자  (0) 2014.11.02
OperatorEx02.java-비교(관계) 연산자  (0) 2014.11.01
형 변환 - OperatorEx03.java  (0) 2014.10.29
대입 연산자-OperatorEx09.java  (0) 2014.10.27
% 연산자- OperatorEx14  (0) 2014.10.24
/연산자 연산-OperatorEx13  (0) 2014.10.24
Posted by codedragon codedragon

댓글을 달아 주세요

자동형 변환-프로모션/디모션

   

   

소스코드

  1.  public class CastEx03 {
  2.         public static void main(String[] args){
  3.                  
  4.                  
  5.                 System.out.println("");
  6.                 System.out.println("=========프로모션=========");
  7.                 /*프로모션:
  8.                 자료형으로 승격이 일어나는 형태
  9.                 정보의 손실이 전혀 없으며 자동적으로 발생*/
  10.                 byte b1 = 127;
  11.                 byte b2 = 127;
  12. //              byte b3 = b1 + b2;      //Error: cannot convert from int to byte
  13.                 int i1 = b1 + b2;      
  14.                 /*32bit(4byte)미만 byte 데이터 연산시 32bit int형으로 승격됩니다. 데이터 타입이 다르므로 , int형은 byte형으로 저장되지 않습니다.
  15.                 Error: cannot convert from int to byte*/
  16.                 System.out.println("i1= " + i1 );
  17.                 System.out.println("b1 + b2 = " + (b1+b2) );    // 자동적으로 int 형변환 됩니다.
  18.                  
  19.                 System.out.println("");
  20.                 short s1 = 12345;
  21.                 short s2 = 12345;
  22.                 int i2 = s1 + s2;
  23. //              32bit(4바이트)미만 shore 데이터 연산시 32bit int형으로 승격
  24.                 System.out.println("i2= " + i2 );
  25.                 System.out.println("s1 + s2 = " + (s1+s2) );    // 자동적으로 int 형변환 됩니다.
  26.                  
  27.                 System.out.println("");
  28.                 int int1 = 12345;
  29.                 long lg1 = 1234567L;
  30. //              long            = int           long
  31.                 long resultL = int1 +   lg1;    // int -> long 자동적으로 형변환
  32.                 System.out.println("resultL = " + resultL);
  33.                  
  34.                 System.out.println("");
  35.                 int int2 = 12345;
  36.                 double d1 = 100.3D;
  37.                 double resultD= int2 + d1;      // int -> double 자동적으로 형변환
  38.                 System.out.println("resultD = " + resultD);
  39.                  
  40.                  
  41.                 System.out.println("");System.out.println("");
  42.                 System.out.println("=========디모션=========");
  43.                 /*디모션:
  44.                 작은 자료형으로 강등
  45.                 자료의 손실이 있을 있음
  46.                 명시적으로 형변환해야 */
  47.                 byte b4 = 125;
  48.                 byte b5 = 125;
  49.                 byte result_byte = (byte)(b4 + b5);    
  50.                 //연산결과로 int 자동으로 형변환 되므로 byte 자료형을 유지하기 위해 int -> byte 강제 형변환
  51. //              (byte): 캐스트 연산자를 사용하여 강제 형변환
  52.                 System.out.println("result_byte = " + result_byte);
  53.                 System.out.println("b4 + b5 = " + (b4 +b5) );
  54.                  
  55.                 System.out.println("");
  56.                 short s4 = 1234;
  57.                 short s5 = 1234;
  58.                 short result_short = (short)(s4 + s5);
  59.                 System.out.println("s4 + s5 = " + (s4 +s5) );
  60.                 System.out.println("result_short = " + result_short);
  61.                  
  62.                 System.out.println("");
  63.                 int int3 = 1234;
  64.                 float f1 = 100.5F;
  65. //              int result_int1 = int3 + f1;
  66.                 int result_int2 = int3 + (int)f1;       //float ->int 강제 형변환 (절삭됨)
  67.                 System.out.println("int3 + f1 = " + (int3 + f1) );
  68.                 System.out.println("result_int2 = " + result_int2);
  69.                  
  70.                 System.out.println("");
  71.                 int int4 = 1234;
  72.                 long lg2 = 1234L;
  73.                 int result_int3 = int4 + (int)lg2;      //long -> int 강제 형변환
  74.                 System.out.println("int4 + lg2 = " + (int2 +lg2) );
  75.                 System.out.println("result_int3 = " + result_int3);
  76.                  
  77.                  
  78.                  
  79.         }
  80.    
  81. }


   

   

출력결과

   

Posted by codedragon codedragon

댓글을 달아 주세요

   

자료형 변환-표현방법의 변환을 의미

   

소스코드

  1.  public class CastEx02 {
  2.    
  3.         public static void main(String[] args)
  4.         {
  5.                 short num1=10;
  6.                 short num2=20;
  7.                 short result=(short)(num1 + num2);
  8.                 //short to int -> 연산 -> int to short (내부적으로 자동으로 일어남)
  9.                  
  10.                 System.out.println(result);
  11.         }


   

   

   

출력결과

   

Posted by codedragon codedragon

댓글을 달아 주세요

   

자동형 변환을 통해 문자의 유니코드 값 출력

   

   

소스코드

  1.  public class CastEx01 {
  2.    
  3.         public static void main(String[] args)
  4.         {
  5.                 char ch1='A';
  6.                 char ch2='Z';
  7.                          
  8.                 int num1=ch1;
  9.                 int num2=(int)ch2;
  10.    
  11.                 System.out.println("문자 A 유니코드 : "+num1);
  12.                 System.out.println("문자 Z 유니코드 : "+num2);     
  13.         }
  14. }


   

   

출력결과

   

Posted by codedragon codedragon

댓글을 달아 주세요

형변환

자동 형변환

명시적 형변환

   

   

var input = prompt('숫자를 입력하세요', '숫자');

   

출처: <https://github.com/10zeroone/study_javascript/blob/master/WebContent/ch01-variable/09.html>

   

   

   

   

   

자동 형변환

document.write(typeof(input) + ':' + input);

document.write('<br>');

//input 저장된 데이터의 타입이 String이기 때문에 +연산자를 사용하면 덧셈에 대한 연산이 수행되지 않고

//문자끼리 연결되어

//덧셈 연산을 수행하려면 명시적으로 형변환을 해야

document.write(input + 10);                

document.write('<br>');

//만약에 입력한 데이터가 숫자가 아니고 문자열일 경우는 NaN(Not a Number) 출력

document.write(input * 10);                //자동형변환

document.write('<br><br>');

   

출처: <https://github.com/10zeroone/study_javascript/blob/master/WebContent/ch01-variable/09.html>

   

   

   

명시적 형변환

//문자 -> 숫자

var numberInput = Number(input);

document.write('형변환 이후 <br>');

document.write(typeof(numberInput)+ ':' + numberInput + '<br>');

document.write(numberInput + 10);        

   

출처: <https://github.com/10zeroone/study_javascript/blob/master/WebContent/ch01-variable/09.html>

   

   

전체 소스

<html>

<head>

<meta charset="UTF-8">

<title>형변환</title>

<script type="text/javascript">

//내용                , 입력박스에 미리 보여지는 글자

var input = prompt('숫자를 입력하세요', '숫자');

document.write(typeof(input) + ':' + input);

document.write('<br>');

//input 저장된 데이터의 타입이 String이기 때문에 +연산자를 사용하면 덧셈에 대한 연산이 수행되지 않고

//문자끼리 연결되어

//덧셈 연산을 수행하려면 명시적으로 형변환을 해야

document.write(input + 10);                

document.write('<br>');

//만약에 입력한 데이터가 숫자가 아니고 문자열일 경우는 NaN(Not a Number) 출력

document.write(input * 10);                //자동형변환

document.write('<br><br>');

//명시적 형변환

//문자 -> 숫자

var numberInput = Number(input);

document.write('형변환 이후 <br>');

document.write(typeof(numberInput)+ ':' + numberInput + '<br>');

document.write(numberInput + 10);        

</script>

</head>

<body>

</body>

</html>

   

출처: <https://github.com/10zeroone/study_javascript/blob/master/WebContent/ch01-variable/09.html>

   

'Development > JavaScript, jQuery, ...' 카테고리의 다른 글

변수의 재정의  (0) 2014.05.30
변수  (0) 2014.05.30
형변환  (0) 2014.05.30
12.html-기본타입(null과 undefined)  (0) 2014.05.28
11.html-기본타입(불린(boolean))  (0) 2014.05.28
10.html-기본타입(문자열)  (0) 2014.05.28
Posted by codedragon codedragon

댓글을 달아 주세요