Strings in Java are immutable, meaning their values cannot be changed after creation. The String pool stores String literals in memory to share common Strings and reduce memory usage. While String objects themselves are immutable, references to Strings can point to different objects and are mutable.