Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Intellij Idea中找到静态字符串结果串联而不运行代码?_Java_String_Intellij Idea - Fatal编程技术网

Java 如何在Intellij Idea中找到静态字符串结果串联而不运行代码?

Java 如何在Intellij Idea中找到静态字符串结果串联而不运行代码?,java,string,intellij-idea,Java,String,Intellij Idea,代码示例: public class StringHolder{ public static final String ONE = "ONE"; public static final String TWO = "TWO"; public static final String THREE = "THREE"; public static void main (String[] args){ String someVariable = ONE +

代码示例:

public class StringHolder{
    public static final String ONE = "ONE";
    public static final String TWO = "TWO";
    public static final String THREE = "THREE";

    public static void main (String[] args){
        String someVariable = ONE + TWO + THREE;
    }
}
如何从静态常量计算字符串值?。例如,使用Intellij Idea,我可以在调试中运行程序,放置断点,在表达式上按“ctrl+alt+f8”,然后查看表达式值。那个么,在并没有编译代码和运行程序的情况下,是否可以使用静态分析器对此进行评估? 关键点是从静态常数计算的值,而不是从函数参数计算的值,因此analyzer只需“转到”常量值,将它们连接起来,并在弹出窗口中显示值

当我有一个块和“刚刚初始化”变量时的另一种情况:

{
    final String a = "a";
    final String b = "b"
    final String c = "c"
    String result = a+b+c;
}

另外,你明白我的意思吗?:)

通过反编译字节码,您可以看到编译时连接的字符串
“onetwotree”

javap -c StringHolder
看看第一份作业

first+second+third
的连接仍将在执行时而不是编译时完成,因此我希望看到使用
StringBuilder
StringBuffer
的代码,并且在不运行代码的情况下不会出现字符串连接的“结果”

public static final String ONE = "ONE";
public static final String TWO = "TWO";
public static final String THREE = "THREE";
是编译时常量,将在编译时内联

因此,您可以在反编译生成的
.class
文件中看到结果。另一个
结果在运行时之前不可见


对于
someVariable
您将看到类似
someVariable=“onetwotree”。编译器这样做是为了优化,因此是可见的

使用intellij idea 14很容易:

  • 只需将光标放在字符串连接上
  • 按alt+enter键
  • 选择“将字符串连接文本复制到剪贴板”
  • 将结果粘贴到某个地方

  • 在哪里看到它?您的问题不完整。谢谢,请注意,您只能使用最终变量和文字。否则,你会得到什么?谢谢。有用的捷径。请注意,在极少数情况下,串联不是真的。例如
    stringtext='A'+1+“”此快捷方式将复制到剪贴板“A1”,而不是
    文本的实际值(66)。IntelliJ版本2016.3它们将不会内联。他们将被集中起来,这恰恰相反。