Java Compiler String optimization

compiler-construction, java, string

Solution

To check if what JLS says about constant expressions is true I complied this code, Test.java

public static void main(String[] args) {
    log.warning("123" + "456");
}

then decompile Test.class with Jad and got this

public static void main(String args[])
{
    log.warning("123456");
}

that is, in Test.class there is only one literal "123456"

Problem

It seems reasonable to me that the compiler is going to take something like this: ``` log.info("A really long logger message that is kind of a pain in the tucous " + "and violates formatting standards by making the line to long"); ``` and compile the two Strings into one. I'm pretty sure this is true but I would like to have my ducks in a row if anyone brings it up.

Original source