gpt4 book ai didi

java - String 实例上的调用格式

转载 作者:行者123 更新时间:2023-12-02 03:31:37 25 4
gpt4 key购买 nike

在花了很长时间使用 scala 后,我一直在研究 java 8。当我进行黑客攻击时,我陷入了 scala 模式,我写了类似 "# instance_method:%s thread:%d".format(testStr, testNum);" 的内容。奇怪的是,编译器没有提示,甚至虽然我在字符串文档中找不到名为“format”的实例方法(事实证明我没有意识到静态方法的文档与这里相关)。所以以下代码:

public class Weird{
public static void main(String[] args){
String testStr = "hmm";
Long testNum = 7L;
String weird = "# instance_method:%s thread:%d".format(testStr, testNum);
String msg = String.format("# static:%s thread:%d", testStr, testNum);
System.err.println(weird);
System.err.println(msg);
}
}

给出输出:

hmm
# static:hmm thread:7

因此 "# instance_method:%s thread:%d".format(testStr, testNum); 计算结果为 testStr 。我可能做了一些愚蠢的事情,但是这是怎么回事?

最佳答案

您正在以下表达式中调用 static format 方法

"# instance_method:%s thread:%d".format(testStr, testNum);

即使用参数 testNum 格式化 testStr。由于 "hmm" 中没有占位符,因此计算结果只是 "hmm"

使用实例调用static方法在java中是有效的,但应该避免,因为它很容易导致困惑。表达式的类型用于确定在这种情况下调用的方法。

关于java - String 实例上的调用格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38023069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com