Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以下哪种是java中最快的数据类型?_Java - Fatal编程技术网

以下哪种是java中最快的数据类型?

以下哪种是java中最快的数据类型?,java,Java,在java数据类型(byte、short、int、float、double、boolean)中,哪一种是编译和计算最快的数据类型?为什么?请清楚地列出原因,以理解它为什么重要?您的速度问题不会归结于您使用的原始类型,过早优化是所有问题的根源。我几乎可以保证您使用的原语类型不会影响程序的速度。根据您需要的用途选择您的类型 这两种类型之间唯一的性能差异是浮点运算与整数运算,其中整数运算明显更快 经验法则-如果您的数据可以自然地表示为整数(例如商店中香蕉的数量),请选择一些整数类型(byte,shor

在java数据类型(byte、short、int、float、double、boolean)中,哪一种是编译和计算最快的数据类型?为什么?请清楚地列出原因,以理解它为什么重要?您的速度问题不会归结于您使用的原始类型,过早优化是所有问题的根源。我几乎可以保证您使用的原语类型不会影响程序的速度。根据您需要的用途选择您的类型

这两种类型之间唯一的性能差异是浮点运算与整数运算,其中整数运算明显更快

经验法则-如果您的数据可以自然地表示为整数(例如商店中香蕉的数量),请选择一些整数类型(
byte
short
int
long
)。如果你的数据是用实数表示的(你买的香蕉的公斤数),选择
float
double

每一种类型都有其特殊性,您需要了解它们的范围,如果要分配数百万个,还需要了解它们的内存占用


编辑处理OP的评论:

你能告诉我为什么整数运算更快吗

首先,我必须承认我所说的理论上是不正确的。这完全取决于运行代码的计算机的体系结构

一般来说,这种说法适用于当前的兼容PC的处理器。这一切归结为数字的内部表示(搜索整数值和浮点数)和处理器的内部机制、它们的计算单元以及某些操作的快捷方式。这至少是几节课的主题

过度简化告诉我们,使用整数计数更容易,因为它们的存储和处理方式比浮点数简单得多

也不要忘记,这在不同的处理器和不同的体系结构上是不同的

我写了一个简单的测试,显示了我的结果:

private final static int MAX = 1_000_000_000; 

public static void main(String[] args) {
    long time;  // no see

    time = System.currentTimeMillis();
    int intnum = 0;
    for (int i = 0; i < MAX; i++) {
        intnum += i;
    }
    System.out.println("int:\t" + (System.currentTimeMillis() - time));

    time = System.currentTimeMillis();
    long longnum = 0;
    for (int i = 0; i < MAX; i++) {
        longnum += i;
    }
    System.out.println("long:\t" + (System.currentTimeMillis() - time));

    time = System.currentTimeMillis();
    float floatnum = 0;
    for (int i = 0; i < MAX; i++) {
        floatnum += i;
    }
    System.out.println("float:\t" + (System.currentTimeMillis() - time));

    time = System.currentTimeMillis();
    double doublenum = 0;
    for (int i = 0; i < MAX; i++) {
        doublenum += i;
    }
    System.out.println("double:\t" + (System.currentTimeMillis() - time));

    // just to use the values, don't pay attention to the results
    System.out.println();
    System.out.println(intnum);
    System.out.println(longnum);
    System.out.println(floatnum);
    System.out.println(doublenum);
}
虽然(我甚至没有尝试太多),但这本书相当准确地描述了我在现实世界中的经历

整数是最快的,其次是
long
,然后是浮点类型


如果我有64位处理器、操作系统和JVM,
int
long
可能处于同一级别(就像我的电脑上的
float
double
一样)。

以什么方式最快?编译?分配大量的资金?计算?您想解决什么问题?以便对世界上所有类型使用相同的
数据类型
?因为它是最快的。什么是。。。用于编译的最快数据类型?什么意思?我想你需要问一个恰当的问题。我不知道哪一个最快,但就记忆而言,它们有区别。为了能够回答这个问题,请拿A4纸,将数据类型名称写在单独的纸上,用它们制作纸飞机,然后扔掉每一个,测量距离和飞行时间。然后你会得到结果。。。无论是这样,还是你的问题都和这条评论一样有意义。但是它们可以改变内存使用;)。。。但我真的不认为这是作者的想法。我担心你会建议一些特定的数据类型+1对于
根据您的需要选择您的类型
您能告诉我为什么整数计算更快吗?@DurgaPrasad9v答案编辑。
int:    578 ms
long:   1578 ms
float:  3156 ms
double: 3172 ms