小编Pet*_*rey的帖子

如何使用Java逐行读取大型文本文件?

我需要使用Java逐行读取大约5-6 GB的大文本文件.

我该怎么办?

java io performance file-io garbage-collection

813
推荐指数
15
解决办法
116万
查看次数

为什么Math.round(0.49999999999999994)会返回1?

在以下程序中,您可以看到每个值略小于.5向下舍入,除了0.5.

for (int i = 10; i >= 0; i--) {
    long l = Double.doubleToLongBits(i + 0.5);
    double x;
    do {
        x = Double.longBitsToDouble(l);
        System.out.println(x + " rounded is " + Math.round(x));
        l--;
    } while (Math.round(x) > i);
}
Run Code Online (Sandbox Code Playgroud)

版画

10.5 rounded is 11
10.499999999999998 rounded is 10
9.5 rounded is 10
9.499999999999998 rounded is 9
8.5 rounded is 9
8.499999999999998 rounded is 8
7.5 rounded is 8
7.499999999999999 rounded is 7
6.5 rounded is 7 …
Run Code Online (Sandbox Code Playgroud)

java floating-point double rounding

561
推荐指数
5
解决办法
7万
查看次数

Java FileOutputStream如果不存在则创建文件

有没有办法以一种方式使用FileOutputStream,如果文件(String filename)不存在,那么它会创建它吗?

FileOutputStream oFile = new FileOutputStream("score.txt", false);
Run Code Online (Sandbox Code Playgroud)

java file-io file new-operator fileoutputstream

178
推荐指数
6
解决办法
33万
查看次数

为什么创建一个说昂贵的线程?

Java教程说创建一个Thread很昂贵.但为什么它很贵?创建Java Thread会使其创建成本高昂时究竟发生了什么?我认为这句话是正确的,但我只是对JVM中线程创建的机制感兴趣.

线程生命周期开销.线程创建和拆解不是免费的.实际开销因平台而异,但线程创建需要时间,将延迟引入请求处理,并且需要JVM和OS的一些处理活动.如果请求频繁且轻量级,就像在大多数服务器应用程序中一样,为每个请求创建新线程会占用大量计算资源.

来自Java Concurrency in Practice
作者:Brian Goetz,Tim Peierls,Joshua Bloch,Joseph Bowbeer,David Holmes,Doug Lea
打印ISBN-10:0-321-34960-1

java concurrency performance multithreading

173
推荐指数
5
解决办法
4万
查看次数

Java反射性能

使用反射创建对象而不是调用类构造函数会导致任何显着的性能差异吗?

java reflection optimization performance

168
推荐指数
10
解决办法
10万
查看次数

为什么多次添加0.1会保持无损?

我知道0.1十进制数不能用有限的二进制数(解释)精确表示,所以double n = 0.1会失去一些精度而不会完全正确0.1.另一方面0.5可以完全表示,因为它是0.5 = 1/2 = 0.1b.

已经说过,添加0.1 三次不会完全给出0.3以下代码打印是可以理解的false:

double sum = 0, d = 0.1;
for (int i = 0; i < 3; i++)
    sum += d;
System.out.println(sum == 0.3); // Prints false, OK
Run Code Online (Sandbox Code Playgroud)

但是,如何增加0.1 五次才会给出确切的答案0.5呢?以下代码打印true:

double sum = 0, d = 0.1;
for (int i = 0; i < 5; i++)
    sum += …
Run Code Online (Sandbox Code Playgroud)

java floating-point precision double

148
推荐指数
2
解决办法
1万
查看次数

如何在Java中实现无穷大?

Java是否有能代表每种数值数据类型的无穷大?它是如何实现的,以便我可以用它进行数学运算?

例如

int myInf = infinity; //However it is done
myInf + 5; //returns infinity
myInf*(-1); //returns negative infinity
Run Code Online (Sandbox Code Playgroud)

我尝试使用非常大的数字,但我想要一个合适的,简单的解决方案.

java double infinity

127
推荐指数
5
解决办法
26万
查看次数

知道为什么我需要将整数文字转换为(int)吗?

在以下示例中

int i = -128;
Integer i2 = (Integer) i; // compiles

Integer i3 = (Integer) -128; /*** Doesn't compile ***/

Integer i4 = (Integer) (int) -128; // compiles
Integer i4 = -128; // compiles
Integer i5 = (int) -128; // compiles
Integer i6 = (Integer) (-128); // compiles
Integer i7 = (Integer) 0-128; // compiles
Run Code Online (Sandbox Code Playgroud)

我不能施展-128,(Integer)但我可以施展(int) -128.

我一直认为它-128int类型,并且它(int)应该是多余的.

行上的错误i3

cannot find symbol variable Integer
Run Code Online (Sandbox Code Playgroud)

我尝试使用Java …

java syntax casting

122
推荐指数
7
解决办法
5568
查看次数

如何在Java中使用指针?

我知道Java没有指针,但我听说Java程序可以用指针创建,这可以由少数java专家完成.这是真的吗?

java pointers unsafe

102
推荐指数
7
解决办法
33万
查看次数

Java中的大数字

我如何在Java中使用极大数字进行计算?

我已经尝试long但最大限度为9223372036854775807,并且当使用整数时,它不能保存足够的数字,因此不够准确,无法满足我的需要.

有没有办法解决?

java integer numbers biginteger

90
推荐指数
5
解决办法
20万
查看次数