当前位置: 首页 > 面试题库 >

为什么将short转换为char是一个狭窄的转换?

于鹏
2023-03-14
问题内容

缩小转换是指将可以容纳较大值的数据类型放入可以容纳较小值的数据类型。

long l = 4L;
int i = (int)l;

但是,我不明白为什么将short转换为char会缩小转换范围,但是我有直觉,这与这两种数据类型的有符号/无符号有关,但我无法解释原因。

short s = 4; // short max value is 32767
char c = (char)s; // char max value is 65535

看起来这将是一个扩大的转换,或者至少不会缩小或扩大,因为它们都是16位并且可以容纳相同数量的值。

    System.out.println((int)Character.MIN_VALUE); //0
    System.out.println((int)Character.MAX_VALUE); //65535 
    System.out.println(Short.MIN_VALUE); //-32768
    System.out.println(Short.MAX_VALUE); //32767
    //65535 = 32768+32767

问题答案:

这是因为a short可以保持负值,而char您可能从中看不到Character.MIN_VALUE。让我举几个例子。

  short s = -124;
  char c = 124; // OK, no compile time error
  char d = -124; // NOT OK, compile time error since char cannot hold -ve values
  char e = s; // NOT OK, compile time error since a short might have -ve values which char won't be able to hold
  char f = (char)s; // OK, type casting. The negative number -124 gets converted to 65412 so that char can hold it
  System.out.println((short)f); // -124, gets converted back to a number short can hold because short won't be able to hold 65412
  System.out.println((int)f); // 65412, gets converted to 65412 because int can easily hold it.

A(负)号-n转换为时char,变得2^16-n。因此,-124成为
2^16-124 = 65412

我希望这有帮助。



 类似资料:
  • 问题内容: 将a转换为a 的最直接和/或最有效的方法是什么? 问题答案: 没有副本: 但是,该方法可能更容易编写,更容易阅读和更快。

  • 问题内容: 我已经通过使用JNI 将URL字符串从Java传递为C代码作为数据类型。我的库方法需要一个as url。 我如何转换的? PS:在C中使用jcharArray有什么优势吗?(即在本地方法中传递而不是字符串) 问题答案: 这是我开始使用JNI时发现的几个有用的链接 http://en.wikipedia.org/wiki/Java_Native_Interface http://down

  • 问题内容: 我正在使用aparapi编写Buddhabrot分形生成器。我将其中的OpenCL部分工作了,得到了一个表示每个像素的单维数组。我将最终图像的尺寸作为最终整数,并编写了代码以获取该数组中任意点的索引。我想将其另存为图像,并且尝试将BufferedImage与TYPE_USHORT_GRAY一起使用。这是我到目前为止的内容: 问题是,我不知道将RGB设置为什么。我需要做什么? 问题答案:

  • 问题内容: 如何在Java中将(2个字节)转换为字节数组,例如 应该是这样的。但不确定。 编辑: 您也可以使用: 发现以获取本机位顺序是大还是小。另外,从以下代码中提取代码: 字节(数组/偏移量)为布尔值 字节数组到char 字节数组短 字节数组到int 浮动的字节数组 字节数组长 字节数组加倍 反之亦然。 问题答案:

  • 问题内容: 有没有办法将a 变成a 或将一个字母变成a (例如如何将a 变成a 和a 变成an )?(如果可以,请链接到相关文档)。 我该如何找到在文档中才隐约知道的类似内容? 问题答案: 您可以通过确定可能涉及的类来查找文档。在这里,候选人是和。 您应该先熟悉以下内容: 原始包装 中的Java Collection框架 它还有助于通过教程更慢地介绍API。 处理字符串中的字符

  • 问题内容: 我正在编写一个基本程序,要求用户输入String,并且我尝试使用Robot(来自),它会在延迟后将该消息键入另一个文档。我现在遇到的问题是,我需要将得到的所有内容都转换为KeyCode。有没有更好的方法可以做我想做的事情?我想我总是可以有一个巨大的switch语句来获取适当的KeyCode,但是我希望会有一种更优雅的方法。我做Python一段时间后的第一个想法是制作一个字符串并将其以某