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

Java char也是int吗?

单于奕
2023-03-14
问题内容

我正在尝试为课程完成一些代码:

public int getValue(char value) {
    if (value == 'y') return this.y;
    else if (value == 'x') return this.x;

由于最终我可能无法返回任何内容,因此它告诉我最终要执行以下操作:

return value;

这让我感到惊讶,因为该方法的返回类型是type
int。但是,它告诉我要返回char!我正在使用eclipse,并且习惯了无数的警告和提示,这是一个很大的惊喜。

那么,char真的是一个int吗?为什么会这样呢?


问题答案:

在Java语言规范状态

Expression在方法声明中出现带有的return语句时,Expression必须
将其分配
给方法的声明返回类型(第5.2节)
,否则会发生编译时错误。

将一个值是否可分配给另一个值的规则定义为

分配上下文允许使用以下之一:

* 不断扩大的原始转换(第5.1.2节)

关于原始类型的19种特定转换称为扩展原始转换:

  • charintlongfloat,或’双

最后

在以下情况下,原始数值的转换变宽不会丢失有关数值整体大小的信息,在这种情况下,数值会精确保留:[…]

从a char到整数类型的加宽转换Tchar值的表示形式扩展为零以填充更宽的格式。

简而言之,通过扩展原始转换,可以将char值作为return语句的表达式分配给返回类型int



 类似资料:
  • 问题内容: 看了一下,我似乎找不到与此相同的问题。我的问题是关于Java的。 创建时,请使用以下语法: 其中的方法也让我觉得它是一个,但是它没有遵循类的Java命名约定,这让我感到困惑。它也是原始类型的数组,可以像原始类型一样使用。 是一个(或任何原始阵列I猜测)的对象,或一个原始? 问题答案: Java中的数组是的子类,因此它是一种对象类型-即使它包含原始类型。您可以检查以下内容:

  • 问题内容: Java是否具有等效于Python 方法的方法? 问题答案: Guava还提供类似于Python的东西: 您也可以使用Guava的AbstractIterator实现一个相当简单的迭代器来执行相同的操作:

  • 问题内容: 如何从诸如-的字符串中获取int值,即包含数字但也可能包含字母的字符串? 失败,因为字符串必须完全是数字。 问题答案: 除非您正在谈论以16为基数的数字(有一种方法可以将其解析为十六进制),否则您需要明确地分离出您感兴趣的部分,然后进行转换。毕竟,以10为底的23e44e11d之类的语义是什么? 如果您确定只有一个数字,则正则表达式可以解决问题。Java具有内置的正则表达式解析器。 另

  • 问题内容: 更准确地说,int是Integer类的一部分(精简版本或其他)还是完全其他的东西? 我知道int是一个值类型,Integer是一个引用类型,但是int是否仍然继承自Object? (我假设在这方面int,long,boolean等都是相似的。为方便起见,仅选择int) 问题答案: Java中的基本类型不是对象,也不继承自Object。 自从Java 1.5引入以来,就允许在int和In

  • 问题内容: 我学习Java String已有一段时间了。以下问题基于以下帖子 Java String是Java中String的特殊 不变性 不可变性:现在,通过不可变性,已经设计了String类,以便可以在其他位置/变量中重用 公共池中 的值。如果将的创建为 但是,如果我创建像 为什么这也是不变的?(或者是?)。由于它具有专用的堆内存,因此我应该能够在不影响任何其他变量的情况下对其进行修改。因此,

  • 哪个效率更高,占用内存更少,循环速度更快,为什么? 案例1: 案例2: 谢谢