我正在尝试为课程完成一些代码:
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种特定转换称为扩展原始转换:
char
以int
,long
,float
,或’双
最后
在以下情况下,原始数值的转换变宽不会丢失有关数值整体大小的信息,在这种情况下,数值会精确保留:[…]
从a
char
到整数类型的加宽转换T
将char
值的表示形式扩展为零以填充更宽的格式。
简而言之,通过扩展原始转换,可以将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: 谢谢