Why does Math.floor return a double?

官方javadoc说Math.floor返回一个“等于一个数学整数”的double,但为什么它不应该返回一个int? According to the same javadoc: If the argument is NaN or an infinity or positive zero or negative zero, then the result is the same as the argument. Can't do that with an int. The largest double value is also larger than the largest int, so it would have to be a long. It's for precision. The d

为什么Math.floor返回一个double?

官方javadoc说Math.floor返回一个“等于一个数学整数”的double,但为什么它不应该返回一个int? 根据相同的javadoc: 如果参数是NaN或无穷大或正零或负零,则结果与参数相同。 不能用int来做到这一点。 最大的双值也大于最大的整数,所以它必须是很长的。 这是为了精确。 双数据类型有一个53位尾数。 除此之外,这意味着一个double可以代表所有2 ^ 53的整体,而不会造成精确度损失。 如果你在一个整数中存储这么大的数

Calculate size of Object in Java

This question already has an answer here: In Java, what is the best way to determine the size of an object? 24 answers You can use the java.lang.instrumentation package: http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/Instrumentation.html It has a method that can be used to get the implementation specific approximation of object size, as well as overhead associated with the

计算Java中Object的大小

这个问题在这里已经有了答案: 在Java中,确定对象大小的最佳方法是什么? 24个答案 你可以使用java.lang.instrumentation包: http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/Instrumentation.html 它有一个方法可用于获取对象大小的实现特定近似值以及与对象相关的开销。 Sergey联系的答案有一个很好的例子,我将在这里重新发布,但是您应该从他的评论中看到: import java.lang.instrument.Instr

Why is Java's boolean primitive size not defined?

The Java Virtual Machine Specification says that there is limited support for boolean primitive types. There are no Java virtual machine instructions solely dedicated to operations on boolean values. Instead, expressions in the Java programming language that operate on boolean values are compiled to use values of the Java virtual machine int data type. The above implies (although I may have

为什么Java的布尔基元大小没有定义?

Java虚拟机规范指出对布尔基元类型的支持有限。 没有Java虚拟机指令专门用于布尔值上的操作。 相反,Java编程语言中操作布尔值的表达式被编译为使用Java虚拟机int数据类型的值。 以上意味着(尽管我可能误解了它)在布尔操作时使用int数据类型,但这是一个32位内存构造。 假设一个布尔值只代表1位信息: 为什么一个字节或短的类型不用作布尔代替int的代理? 对于任何给定的JVM,确切地找出用于存储布尔类型的内存的最

What is "(something else)" in jol GraphLayout output?

When using jol's GraphLayout class to print the graph of objects referenced from an object instance, some of the output entries say "(something else)" instead of a type and reference path. For example, consider the following code that prints the graph of a list of 20 random Integer objects: List<Integer> foo = new Random().ints(20).boxed().collect(Collectors.toList()); Syste

jol GraphLayout输出中的“(其他)”是什么?

当使用jol的GraphLayout类打印从对象实例引用的对象图时,某些输出条目会说“(其他)”,而不是类型和参考路径。 例如,请考虑下面的代码,该代码打印20个随机Integer对象列表的图形: List<Integer> foo = new Random().ints(20).boxed().collect(Collectors.toList()); System.out.println(GraphLayout.parseInstance(foo).toPrintable()); 此代码打印: java.util.ArrayList object externals: ADDRESS

Determining whether a number is a Fibonacci number

I need to to write a Java code that checks whether the user inputed number is in the Fibonacci sequence. I have no issue writing the Fibonacci sequence to output, but (probably because its late at night) I'm struggling to think of the sequence of "whether" it is a Fibonacci number. I keep starting over and over again. Its really doing my head in. What I currently have is the n

确定数字是否是斐波那契数

我需要编写一个Java代码来检查用户输入的数字是否在斐波那契数列中。 我没有写斐波那契序列输出的问题,但(可能是因为它深夜),我正在努力思考“是否”它是一个斐波那契数的顺序。 我一遍又一遍地重新开始。 它真的在做我的头。 我现在拥有的是第n个。 public static void main(String[] args) { ConsoleReader console = new ConsoleReader(); System.out.println("Enter the value for your n: "); int num

Java `final` method: what does it promise?

In a Java class a method can be defined to be final , to mark that this method may not be overridden: public class Thingy { public Thingy() { ... } public int operationA() {...} /** this method does @return That and is final. */ public final int getThat() { ...} } That's clear, and it may be of some use to protect against accidental overriding, or maybe performance — but tha

Java`final`方法:它承诺了什么?

在Java类中,可以将方法定义为final ,以标记此方法可能不会被覆盖: public class Thingy { public Thingy() { ... } public int operationA() {...} /** this method does @return That and is final. */ public final int getThat() { ...} } 这很清楚,它可能有助于防止意外覆盖或性能 - 但这不是我的问题。 我的问题是:从面向对象的角度来看,我明白了,通过定义一个方法final ,类设计器承诺这个方法

Fastest way to determine if an integer's square root is an integer

I'm looking for the fastest way to determine if a long value is a perfect square (ie its square root is another integer): I've done it the easy way, by using the built-in Math.sqrt() function, but I'm wondering if there is a way to do it faster by restricting yourself to integer-only domain. Maintaining a lookup table is impratical (since there are about 231.5 integers whose squar

确定整数的平方根是否为整数的最快方法

我正在寻找最快的方法来确定一个long整数值是否是一个完美平方(即其平方根是另一个整数): 我已经通过使用内置的Math.sqrt()函数简单地完成了它,但是我想知道是否有办法通过将自己限制为仅包含整数的域来更快地实现它。 维护查找表是不实用的(因为大约有231.5个整数的平方小于263)。 这是我现在正在做的非常简单直接的方式: public final static boolean isPerfectSquare(long n) { if (n < 0) return fa

Why switch is faster than if

I have found lots of books in java saying switch statement is faster than if else statement. But I didnot find antwhere saying why switch is faster than if . Example I have a situation i have to choose any one item out of two i can use either of the following way switch(item){ case BREAD: //eat Bread break; default: //leave the restaurant } or using if statement like the followi

为什么开关比如果更快

我在java中发现很多书,switch语句比if语句更快。 但我没有找到antwhere说为什么开关比如果更快 。 例 我有一种情况,我必须选择两个中的任何一个,我可以使用以下任何一种方式 switch(item){ case BREAD: //eat Bread break; default: //leave the restaurant } 或者使用if语句如下 if(item== BREAD){ //eat Bread }else{ //leave the restaurant } 考虑项目和BREAD是不变的整数值 在上面的例子中,行动

Brute force sudoku solver algorithm in Java problem

Everything seems to work fine in the algorithm besides the solve method. When it executes the program using a solvable Sudoku board, it says that it cannot be solved. I've tried everything I can think of in the solve method. I've tried debugging and it fails after the first row is tested. Any suggestions? Here is the full code so far: public class SudokuSolver { public static

在Java问题中蛮力数独求解算法

除了解决方法之外,一切似乎都能在算法中正常工作。 当它使用可解数独板执行程序时,它说它不能解决。 我已经尝试了解决方法中所能想到的一切。 我试过调试,并且在测试第一行后失败。 有什么建议么? 以下是迄今为止的完整代码: public class SudokuSolver { public static void initializeGrid(int[][] grid, int[][] puzzle) { for (int r = 0; r < puzzle.length; r++) { for (int c = 0; c < puzzle

Exceptions in rabbitmq with spring boot

I am getting the following exception repeatedly when I start my spring boot application with rabbitmq. The entire flow is working fine even with the below exceptions. is it to do with the auto-delete in by means ? 08 Jul 2015 16:20:17,652 [ERROR] [SimpleAsyncTaskExecutor-2] SimpleMessageListenerContainer| Failed to check/redeclare auto-delete queue(s). java.util.concurrent.TimeoutExcep

rabbitmq中的例外与春季启动

当我用rabbitmq启动我的spring引导应用程序时,我得到了以下异常。 即使有以下例外,整个流程也可以正常工作。 它是通过手段来实现自动删除吗? 08 Jul 2015 16:20:17,652 [ERROR] [SimpleAsyncTaskExecutor-2] SimpleMessageListenerContainer| Failed to check/redeclare auto-delete queue(s). java.util.concurrent.TimeoutException at com.rabbitmq.utility.BlockingCell.get(BlockingCell.java:77)