下面是示例代码。执行的结果不同于jdk@11和jdk@17.将BigDecimal(1000)格式化为字符串后,白色字符看起来有所不同。最后,结果看起来是一样的——但是,它不是相同的字符串(比较bytes和Base64.encoded)。
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.Base64;
import java.util.Locale;
public class NumberFormatTest {
public static void main(String...args) {
Locale locale = new Locale("fr", "FR");
NumberFormat numberFormat = NumberFormat.getCurrencyInstance(locale);
BigDecimal value = BigDecimal.valueOf(1000);
String result = numberFormat.format(value); // <-- HERE!
System.out.println(result);
byte[] bytes = result.getBytes();
for( int i=0; i<bytes.length; i++) {
System.out.print(bytes[i]+", ");
}
System.out.println();
System.out.println(Base64.getEncoder().encodeToString(bytes));
}
}
jdk@11的结果不同于jdk@17
jdk@11结果:
1 000,00 €
49, -62, -96, 48, 48, 48, 44, 48, 48, -62, -96, -30, -126, -84,
McKgMDAwLDAwwqDigqw=
jdk@17结果:
1 000,00 €
49, -30, -128, -81, 48, 48, 48, 44, 48, 48, -62, -96, -30, -126, -84,
MeKArzAwMCwwMMKg4oKs
jdk@11:
openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment Homebrew (build 11.0.12+0)
OpenJDK 64-Bit Server VM Homebrew (build 11.0.12+0, mixed mode)
jdk@17:
openjdk version "17.0.1" 2021-10-19
OpenJDK Runtime Environment Homebrew (build 17.0.1+1)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.1+1, mixed mode, sharing)
系统:
MacOS
Catalina 10.15.7
这是预期行为吗?
请注意,这两个版本之间的区别在于,分组分隔符(在1
和0
之间)在JDK 11中是u00a0(无中断空间),在JDK 17中是u202f(窄无中断空间)。
这是预期的行为。请参阅此已解决为“无问题”的错误报告。
从bug报告中的讨论来看:
CLDR已将v34中法语的分组分隔符从U 00A0更改为U 202F:https://www.unicode.org/cldr/charts/34/delta/fr.html#SymbolsJDK基于v35。1自[JDK 13]b21起
这是来自Docker官方最佳实践的建议
按照https://openjfx.io/openjfx-docs/#安装-javafx https://openjfx.io/openjfx-docs/#安装-javafx的说明,我通过以下方式编译了示例hellofx.java: 我有错误: 错误:找不到模块:javafx.controls 1错误 然后按照指令添加行:javac--module-path$path_to_fx--add mod
问题内容: 对于Linux发行版,有一个openjdk-8-jre软件包,仅用于安装openjdk 8的jre部分。最新的Windows openjdk 11是否熟悉?可以从http://jdk.java.net/11/下载最新的openjdk版本,但是我找不到仅下载jre部分的方法。 问题答案: 我们不随JDK 11提供单独的JRE下载。相反,您可以使用jlink创建仅包含应用程序所需模块集的自
我很难让IntelJ识别JavaFX包。对于一个新的JavaFX项目,使用OpenJDK11,当尝试构建项目时,IntelliJ无法识别JavaFX包。 我已经从Maven repo导入了。 我看过其他问题,解决方案似乎包括检查字节码是否处于正确的级别(我的是),项目语言是否正确(我的是)。 编辑: 错误:
Java11被宣布为最新的LTS版本。因此,我们正在尝试基于这个Java版本启动新的服务。 但是,Java11的基本Docker映像要比Java8的等效映像大得多: > :84 MB :283 MB (我只考虑官方的OpenJDK和每个Java版本的最轻量级映像。) 更深一层的挖掘,揭开了以下“事情”: 安装在映像中的包比(在运行的Docker容器内)大3倍: > : : 深入研究之后,我发现了这
当我安装netbeans时,它给了我选择java环境的选项,我有3个选项,oracle java和这两个(java-1.7.0-openjdk-i386和java-7-openjdk-i386)。这两个有什么区别呢?操作系统如果Ubuntu。