1. / this.norm(); `1.` 只是语法糖吗?

1. / this.norm(); Is `1.` just syntactic sugar?

我是 Java 的新手,并不知道如何搜索它。因为谷歌搜索 1. double java 没有给我任何令人满意的搜索结果。

我遇到了这段代码:

public Vector normalize() {
    final double inorm = 1. / this.norm();
    return smult(inorm);
}

有人可能会说这段代码太显式了,有一个 final 局部变量。我认为由于 this.norm() returns 和 double 无论如何,1 / this.norm() 会产生相同的效果。

1. 只是一些语法糖,意思和 1.0 一样吗?如果 this.norm() 返回 int 并且我写 1 而不是 1.,会不会发生不同的事情(比如欧氏除法)?

它是指定双字面量的众多方法之一,没有它 1 将是一个整数,这意味着您将进行整数除法,而不是双除法...

System.out.println(1 / 3);           // ==> 0   <== Uh oh, integer division 
System.out.println(1. / 3);          // ==> 0.333333
System.out.println(1.0 / 3);         // ==> 0.333333
System.out.println(1d / 3);          // ==> 0.333333
System.out.println(1D / 3);          // ==> 0.333333
System.out.println( (double)1 / 3 ); // ==> 0.3333333

是语法糖吗?也许不是,我认为更多的是把戏。我更喜欢 1d,因为意图更清楚。

a) 1. 等于 1.0。这意味着你想用作双打。如果您想使用浮点数,您可以使用 1.0f。如果你想使用整数,你会使用 1。最后你会做 1L。

b) 如果您使用 1,那么您将使用整数,但 java 会将其转换为双精度数,因为它会检测到除数是双精度数。为了防止这种动态转换,最好坚持使用通用的数值类型。