2013-09-28 4 views
2

Java에서 char 프리미티브가 암시 적으로 int 프리미티브로 변환되는 이유는 무엇입니까? 사람들은 2 바이트 문자가 4 바이트 정수에 들어갈 수있는 변환이 확대 되었기 때문에라고 말합니다.하지만 부울은 어떨까요? 부울은 확실히 2 바이트 미만을 차지하지만 암묵적으로 변환되지는 않습니다.Char가 암시 적으로 Int로 변환되는 이유는 무엇입니까?

+0

Java는 'true'또는 'false'만 유효한 조건으로 설계되었습니다. 예를 들어 다른 언어에서와 마찬가지로'while (1) '을 할 수 없습니다. 따라서 정수로 부울을 고려하는 것은 이치에 맞지 않습니다. –

+0

당신은 어떤 상황에서 이야기하고 있습니까? 전환은 다른 상황에서 다르게 발생합니다. –

+0

다음과 같이 변환 : char test = 'a'; int test2 = 테스트; –

답변

1

자바 개발자 부울 암시 적으로 어떤 INT 타입으로 변환하고 싶지 않았다, 그것은 C 언어에서 모호로 . 이것을 보시오 question

+0

실제로 변환에 "모호한"것은 없습니다. 문제는 변환법을 통해 합법적 인 프로그래밍 실수가 위험한 코드로 변환된다는 것입니다. –

1

부울은 숫자 데이터 유형이 아니므로 함축 변환이 정의되지 않습니다.

그러나 다행히도 어떤에 부울로 변환하기 쉽다는 당신이 좋아하는 것 : INT

int value = b ? 1 : 2; // if b is true, value will be 1, else 2. 
0

문자에 대해 연산자가 정의되어 있지 않으므로 char에서 int 로의 변환이 필요합니다. char가 다른 것보다 큰지 또는 char이 int로 변환하지 않고 지정된 범위에 있는지를 확인할 수 없습니다 .

JVM 수준의 부울에 대해서도 마찬가지입니다. 차이점은 문자에 대한 연산이 문자와 같은 것을 구현하는 데 필요한 반면에 차이점은 이들 연산을 수행 할 필요가 없다는 것입니다 (true> false는 약간 임의적입니다). 인코딩 변환 및 대소 문자 변환.

관련 문제