Java에서 char 프리미티브가 암시 적으로 int 프리미티브로 변환되는 이유는 무엇입니까? 사람들은 2 바이트 문자가 4 바이트 정수에 들어갈 수있는 변환이 확대 되었기 때문에라고 말합니다.하지만 부울은 어떨까요? 부울은 확실히 2 바이트 미만을 차지하지만 암묵적으로 변환되지는 않습니다.Char가 암시 적으로 Int로 변환되는 이유는 무엇입니까?
2
A
답변
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는 약간 임의적입니다). 인코딩 변환 및 대소 문자 변환.
관련 문제
- 1. JavaScript에서 암시 적으로 문자열을 int로 변환하지 마십시오
- 2. char가 int로 전달되었는지 확인하는 방법
- 3. 암시 적으로 부동하지 않도록 암시 적으로 부동 소수점 형변환
- 4. 암시 적으로 암시 적으로 재생 있음
- 5. 값이 배열로 변환되는 이유는 무엇입니까?
- 6. 암시 적으로 int [int] 형식을 int로 변환 할 수 없습니다.
- 7. 암시 적으로 void 유형을 int로 변환 할 수 없습니다.
- 8. 암시 적으로 int [] 유형을 int로 변환 할 수 없습니다. [
- 9. double이 JSON 문자열에서 int로 변환되는 이유
- 10. 암시 적으로 삭제
- 11. C++ 변환기 생성자가 암시 적으로 호출되는 이유는 무엇입니까?
- 12. 이 클래스가 암시 적으로 포인터로 변환되지 않는 이유는 무엇입니까?
- 13. 중첩 된 인터페이스가 암시 적으로 정적으로 선언 된 이유는 무엇입니까?
- 14. javaBigDecimal2bigDecimal 암시 적으로 적용되지 않는 이유는 무엇입니까? 스칼라 2.9.2이 코드
- 15. 파이썬 인터프리터가 암시 적으로 생성기를 생성하지 않는 이유는 무엇입니까?
- 16. Java에서 인터페이스 변수가 암시 적으로 정적 인 이유는 무엇입니까?
- 17. 이 Java 코드가 암시 적으로 toString() 메서드를 호출하는 이유는 무엇입니까?
- 18. 미디어 쿼리 유형을 암시 적으로 사용하는 이유는 무엇입니까?
- 19. javascript/typescript가 암시 적으로 날짜 객체를 문자열로 변환하는 이유는 무엇입니까?
- 20. 암시 적으로 암시 적으로 부호가없는 형식으로 변환 된
- 21. 암묵적으로 double을 int로 변환 할 수없는 이유는 무엇입니까?
- 22. 배열이 HTTP POST에서 문자열로 변환되는 이유는 무엇입니까?
- 23. Response.Redirect() 뒤에 HTML 데이터가 변환되는 이유는 무엇입니까?
- 24. 주소가 char *으로 형 변환되는 이유는 무엇입니까?
- 25. 부호있는 음수가 부호없는 숫자로 변환되는 이유는 무엇입니까?
- 26. 숫자가 자동으로 이중으로 형 변환되는 이유는 무엇입니까?
- 27. 몽구스 참조가 ID로 변환되는 이유는 무엇입니까?
- 28. 정수부에서 오랫동안 넘치거나 음수로 변환되는 이유는 무엇입니까?
- 29. IL에서 const가 long으로 변환되는 이유는 무엇입니까?
- 30. 컨텍스트가이 RecyclerView 어댑터에서 변환되는 이유는 무엇입니까?
Java는 'true'또는 'false'만 유효한 조건으로 설계되었습니다. 예를 들어 다른 언어에서와 마찬가지로'while (1) '을 할 수 없습니다. 따라서 정수로 부울을 고려하는 것은 이치에 맞지 않습니다. –
당신은 어떤 상황에서 이야기하고 있습니까? 전환은 다른 상황에서 다르게 발생합니다. –
다음과 같이 변환 : char test = 'a'; int test2 = 테스트; –