Why do I need to explicitly cast char primitives on byte and short?(为什么我需要在 byte 和 short 上显式转换 char 原语?)
问题描述
关于原语:当我从较小的类型转换为较大的类型时,转换是隐式的,当我从较大的类型转换为较小的类型时,我需要显式地转换原语,由于数据丢失,这很明显.但有些东西我不明白.当我在某些情况下(字节和短)向上或向下转换为 char 时,我总是需要在两个方向上显式转换,尽管 byte(8 位)适合 char(16 位)?
Concerning primitives: When I cast from smaller to bigger types, the casts are implicit, when I cast from bigger to smaller types, I need to explicitly cast the primitives, that's clear due to loss of data. But there is something I don't get. When I up- or downcast to char in some cases (byte and short), I always need to explicitly cast in both directions although byte (8bit) fits into char (16bit)?
(另请参见 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html)
看我的例子...
public class CastingTest
{
public static void main(String[] args)
{
//casting from smaller to bigger types
short c = 13;
int d = c;
byte f = 34;
short g = f;
byte h = 20;
long i = h;
byte var03 = 6;
double var04 = var03;
//casting from bigger to smaller types
int j = 12;
short k = (short)j;
long m = 56;
int n = (int)m;
double o = 19;
short p = (short)o;
//not possible without explicit cast, but why?
byte var01 = 3;
char var02 = (char)var01;
short var05 = 5;
char var06 = (char)var05;
char var07 = 'k';
short var08 = (short)var07;
}
}
推荐答案
char
是 Java 唯一的 unsigned 类型,因此它的取值范围不完全包含任何其他 Java 类型的值范围.
char
is Java's only unsigned type, therefore its value range does not fully contain any other Java type's value range.
对于目标类型范围未完全覆盖源类型范围的任何转换,您必须使用显式转换运算符.
You must use an explicit cast operator for any conversion where the target type's range doesn't fully cover the source type's range.
这篇关于为什么我需要在 byte 和 short 上显式转换 char 原语?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么我需要在 byte 和 short 上显式转换 char 原语
基础教程推荐
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 在螺旋中写一个字符串 2022-01-01