2014-05-01 3 views
0

stuff를 호출 할 때 char을 매개 변수로 전달하면 컴파일됩니까? char 작업 대신 int를 전달할 것인가? int에서 char로 캐스팅 할 수 있다는 것을 알고 있지만 명확하지 않아야합니까?int에서 char 로의 캐스팅 매개 변수 변수

필자는 매개 변수로 char a와 int x를 가진 반환 유형 String의 정적 메서드 하나를 사용하여 클래스 테스트를 수행합니다.

public class Test { 
    public static String stuff(char a, int x) 
    { 
     char b = (char)x; String s = ""; 
     while (a<b) 
     s+=a+b--; 
     return s; 
    } 
    public static void main(String args[]) 
    { 
     System.out.println(stuff('a','d')); 
    } 
} 
+0

char가 255가 넘을 수 있습니다. –

+0

예, 컴파일됩니다. –

+1

왜 char을 int로 전달할 수 있습니까? int 대신 'd'를 전달합니다. – inventorbc

답변

0

(암시) 캐스팅까지 - -

바이트 -> 짧은 -> INT -> 긴 -> 플로트 -> 더블

(명시) 주조 다운 -

double -> float -> long -> int -> short-> byte

int는 4 바이트의 메모리를 사용하고 char은 2 바이트의 메모리를 사용하므로 명시 적 캐스팅이 필요합니다. int는 음수 값을 취할 수 있으며 char은 양수 값만 취합니다.

 public class Test { 
     public static void main(String args[]) { 
     int i = 78;  // 4 bytes 
     // char ch = i; // error, 4 bytes to 2 bytes 
     char ch = (char) i; // int is type converted to char 
     System.out.println(ch); // prints N (78 ASCII value for N) 

     System.out.println("Max int:"+Integer.SIZE+"bit"); 
     System.out.println("Max char:"+Character.SIZE+"bit"); 

     } 
    } 
0

예 char 전달은 합법적이지만 좋지 않습니다.