I don't think that is a good analogy, I am afraid. A literal is a value one can read directly from the code. So "JavaRanch" is a String literal in Java™ Code. That means a String whose value one can see. In statements like . . . "JavaRanch" is used as a String literal (and that is a String object, too), and the same String object (under the name of s) is used in three other places. "CodeRanch" is also a String literal in that code.
Any String literal is a String object. String objects don't need to be String literals - they can be created using one of the explicit String constructors, or returned by any method (like String.substring).