'+' creates a new String object every time it concatenates something, except when the concatenation is done at compile time.
While this is not a reputable source, from what I remember from my textbooks this sounds correct. So basically, applying this to your code:
String ch = "Java " + "is cool";
Would be handled at compile time since you've defined two constants and concatenated them together, which implies that the result is also in fact a constant and thus can be treated as such and calculated at compile time. It would be interesting to see if you compiled that code then decompiled to see how that statement would read, I'd imagine it may read:
String ch = "Java is cool";
As for the other statement:
String ch1 = "Java " ;
String ch2 = "is cool";
String ch3 = ch1 + ch2;
Since ch3 is calculated from ch1 and ch2, it is done at runtime since ch1 and ch2 are variables instead of constants.
As for your first question, I can't find any references exactly, but from what I remember yes the "" implies a string, just like '' implies a character. I'm not exactly sure what you're trying to do with that statement, but I would imagine you could convert your string into a char array and then cast it to an int array.