printf 为同一变量显示不同的值

2022-09-04 05:42:29

我在网上找到了这个代码,编译时它打印了5和10:

int numbеr = 5;
int number = 10;
System.out.printf("Number one is %d and number two is %d.", numbеr, number);

这怎么能工作?!


答案 1

Java支持Unicode字符,其中一个“数字”变量中的一个或多个字母是来自不同字母表的Unicode字母,您可以通过复制粘贴这两个名称并尝试执行此操作来检查这一点:

System.out.println("numbеr".equals("number"));

它们在肉眼看来是一样的,但事实并非如此,您的IDE将在控制台中显示为假作为评估结果。自己试试吧。

编辑:

字母“e”是不同的,将其转换为int的输出是101和1077,如果您进行Google搜索“unicode 1077”,以下链接是搜索引擎会抛给您的众多链接之一:

http://www.codetable.net/decimal/1077

如您所见,它说它是西里尔字母小写字母“e”。


答案 2