¿Cómo funcionan las subcadenas en Java?