JavaScript代码:
alert( -123456 >>> 0 ); // Prints 4294843840
Java代码:
System.out.println( -123456 >>> 0 ); // Prints -123456
为什么?我已经阅读了文档,但没有发现不同。如何将JavaScript代码移植到Java?
两者都是合乎逻辑的右移,但JavaScript在处理数字方面有些怪异。通常,JavaScript中的数字为浮点数,但按位运算会将其转换为无符号的32位整数。因此,即使该值看起来不应更改,它也会将数字转换为32位无符号整数。
您看到的值4294843840
与相同-123456
,但被解释为无符号而不是有符号。
问题内容: Java中的和运算符有什么区别? 问题答案: 是算术右移,是逻辑右移。 在算术移位中,将扩展符号位以保留数字的符号性。 例如:用8位表示的将是(因为最高有效位的权重为负)。使用算术移位将其右移一位,你将得到1。但是,逻辑右移并不关心该值是否可能表示带符号的数字;它只是将所有内容移至右侧,并从左侧填充0。使用逻辑移位将右移一位将得到。
那么,在这些语言中同时使用逻辑运算符和按位运算符有什么具体的理由吗?或者他们只是出于熟悉的原因被包括在内? (我知道您可以在布尔上下文中使用“按位”运算符来避免Java和C#中的短路,但我从来不需要这样的行为,所以我想这可能是一个大部分未使用的特例)
问题内容: 和之间有什么区别?它们都创建一个类的实例,我不确定它们之间有什么区别。 问题答案: 在操作创建一个是静态已知的(在编译时),并可以调用你想创建对象的任何构造一个类型的新对象。这是创建对象的首选方式- 快速且JVM对它进行了许多积极的优化。 是一个动态构造,用于查找具有特定名称的类。它比使用速度慢,因为无法将对象的类型硬编码到字节码中,并且因为JVM可能必须执行权限检查以确保您有权创建对
问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 我应该在TSQL中使用!=或<>表示不相等吗? 如果我使用一个简单的表,例如: 两者都给我: 那么和mysql运算符有什么区别? 问题答案: 它们完全相同。请参阅文档。 http://dev.mysql.com/doc/refman/5.0/en/comparison- operators.html#operator_not-
问题内容: JavaScript和Java有什么区别? 问题答案: Java和Javascript相似,例如Car和Carpet相似。
问题内容: 我正在更深入地学习哈希码,并发现: 1.如果覆盖equals(),则也必须覆盖hashcode()。 2.要查找2个对象是否为同一对象,请使用==运算符 考虑到这两个因素,在Java中,我假设使用什么来比较 两个实例是否相同, 实际上在做 但是通过运行下面的测试,似乎我错了。 根据使用并查看是否调用的测试。 所以我的问题是,如果可以用来比较对象是否相同,覆盖e 和比较方法的目的是什么?