我有以下代码片段。
public static void main(String[] args) {
short a = 4;
short b = 5;
short c = 5 + 4;
short d = a;
short e = a + b; // does not compile (expression treated as int)
short z = 32767;
short z_ = 32768; // does not compile (out of range)
test(a);
test(7); // does not compile (not applicable for arg int)
}
public static void test(short x) { }
以下摘要是否正确(仅针对上面的
简短示例)?
1. 不使用类型转换直接初始化只能使用文字或单个变量(只要该值在声明的类型范围内)
2. 如果作业的rhs使用变量处理表达式,则必须进行强制转换
但是,
考虑到之前的摘要,为什么我确实需要转换第二个方法调用的参数?
这些是相关的JLS部分:
Conversion](http://java.sun.com/docs/books/jls/third_edition/html/conversions.html#5.1.1)
任何类型都允许从类型到相同类型的转换。
Conversion](http://java.sun.com/docs/books/jls/third_edition/html/conversions.html#5.2)
当将表达式的值分配给
变量时,将发生赋值转换:必须将表达式的类型转换为
变量的类型。分配上下文允许使用以下之一:
身份转换
[…]
此外,如果表达式的类型是恒定表达byte,
short,char或int:
如果变量的类型
是byte,short或char,并且常量表达式的值在变量的类型中可表示,则可以使用变窄的原始转换
。
上述规则解释了以下所有内容:
short a = 4; // representable constant
short b = 5; // representable constant
short c = 5 + 4; // representable constant
short d = a; // identity conversion
short e = a + b; // DOES NOT COMPILE! Result of addition is int
short z = 32767; // representable constant
short z_ = 32768; // DOES NOT COMPILE! Unrepresentable constant
至于为什么不能编译:
test(7); // DOES NOT COMPILE! There's no test(int) method!
这是因为只为
赋值定义了常量的缩小转换。不用于方法调用,它具有完全不同的规则。
JLS 5.3。方法调用
Conversion
特别是方法调用转换不包括作为
分配转换一部分的整数常量的隐式缩小。
Java编程语言的设计者认为,包括这些
隐式的缩小转换将为
重载的方法匹配解决过程增加额外的复杂性。
我只解释
有效的Java 2nd Edition的第41项:明智地使用重载:
确定选择哪个过载的规则非常
复杂。在语言规范中,它们占据了33页,
并且几乎没有程序员理解它们的所有精妙之处。
本文向大家介绍请简短说明一下你对AQS的理解。相关面试题,主要包含被问及请简短说明一下你对AQS的理解。时的应答技巧和注意事项,需要的朋友参考一下 考察点:多线程 AQS其实就是一个可以给我们实现锁的框架 内部实现的关键是:先进先出的队列、state状态 定义了内部类ConditionObject 拥有两种线程模式独占模式和共享模式。 在LOCK包中的相关锁(常用的有ReentrantLock、
问题内容: 我需要发送网络订单(我要使用Java编写的游戏服务器的简称)。我读到有关网络订单的信息,但找不到有关在数据发送之前发送的空头的任何详细信息。有人可以向我解释它是什么,以及如何使用Java将其发送给客户端吗? 问题答案: Java NIO字节缓冲区支持更改字节顺序。因此,网络字节顺序为Big Endian。 字节顺序是存储大于单个字节的数值的字节的顺序。有2种口味:Big Endian(
问题内容: 这可能已经在另一篇文章中得到了回答,但是我不明白为什么我的测试Java应用程序(1.7.0_01)无法编译某些内容。 这样编译: 我知道“ a + a”将产生一个整数。这样可以编译: 那为什么不编译呢? 另外,我是否可以假设由于转换为整数而不能在短裤上使用+ =,-=等…?如果可以进行这些操作,有人可以提供示例吗? 编辑1 由于有人建议将它复制为原始类型’short’-Java中的强制
我想在“管理”中产品标题下方的“编辑订单”页面中显示“产品简短说明”。 我对WooCommerce比较陌生,根据我的发现,我相信我应该在订购之前使用动作挂钩 比如: 任何关于如何进一步调整的帮助都将不胜感激
这是一个很简短的教程,可以让你领略 Flux 和 Redux 思想的精髓。当你初次接触 Redux 时,Redux 官方文档极其详尽,是你的首选。本教程不同点是,通过介绍 Redux 使用来向你展示 Flux 概念。如果你想了解更多细节,请参谋 Redux 官方文档。
在WooCommerce中,我试图在购物车项目中添加特定类别的产品简短描述。 我发现这段代码将产品简短描述添加到购物车中的所有产品中,但我不知道如何将其缩小到仅显示在特定产品上: 如何使此代码仅显示已定义产品类别的简短说明? 谢谢