Páginas

¿Comillas simples (') vs comillas dobles (") en programación — ¿qué significan?

En muchos lenguajes de programación las comillas simples ' y las comillas dobles " no son lo mismo: indican tipos de datos distintos o comportamientos distintos. Aquí explicamos lo más relevante, con énfasis en Java, y ejemplos prácticos.

1. En Java: ' = char | " = String

En Java la diferencia es de tipo de dato:

  • Comillas simples 'x': representan un char, un único carácter. Ejemplo: 'A', '3', '?'.
  • Comillas dobles "texto": representan un String, una cadena de caracteres (puede tener uno o muchos caracteres). Ejemplo: "Hola", "M".

Ejemplo con char (comillas simples)

char inicial = 'M';
if (inicial == 'M' || inicial == 'm') {
    System.out.println("Empieza por M");
}

Aquí usamos == porque comparamos valores primitivos char.

Ejemplo con String (comillas dobles)

String inicial = "M";
if (inicial.equalsIgnoreCase("m")) {
    System.out.println("Empieza por M");
}

Con String no se usa == (no compara contenido), sino métodos como equals() o equalsIgnoreCase().

2. ¿Por qué no usar == con String en Java?

== compara referencias (si dos variables apuntan al mismo objeto), no el contenido. Para comparar texto correctamente se usan:

  • str1.equals(str2) — compara respetando mayúsculas/minúsculas.
  • str1.equalsIgnoreCase(str2) — compara ignorando mayúsculas/minúsculas.

3. Ejemplo completo leyendo del usuario

import java.util.Scanner;

public class InicialDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Escribe la inicial: ");
        String entrada = sc.nextLine(); // entrada es String

        if (!entrada.isEmpty() && entrada.substring(0,1).equalsIgnoreCase("m")) {
            System.out.println("Tu nombre empieza por M");
        } else {
            System.out.println("Tu nombre no empieza por M");
        }

        sc.close();
    }
}

En este ejemplo trabajamos con String y usamos equalsIgnoreCase para no preocuparnos por mayúsculas o minúsculas.

4. Otros puntos importantes y errores comunes

  • Usar comillas dobles para cadenas vacías: "" es una cadena vacía válida (String).
  • Comillas simples sólo para un carácter: 'AB' es inválido en Java porque contiene más de un carácter.
  • Comparar Strings con ==: puede «funcionar» en casos por internamiento de Strings, pero es incorrecto y frágil; usa equals.
  • Escapar comillas dentro de cadenas: en Java se usa la barra invertida \:
        String s = "Ella dijo: \"Hola\"";
        char ap = '\'';
        

5. Breve comparación con otros lenguajes

La semántica puede cambiar según el lenguaje:

  • JavaScript: tanto 'texto' como "texto" son cadenas (String), y además existe `plantilla ${expr}` (template literals). No hay char separado.
  • Python: ' y " son equivalentes para str. No hay char primitivo.
  • C / C++: 'a' es carácter (char), mientras que "texto" es arreglo de caracteres o const char* (C) / std::string (C++ cuando se construye así).

6. Reglas rápidas (para Java)

SituaciónUsar
Un solo carácterchar c = 'x';
Cadena de textoString s = "texto";
Comparar contenido de Stringss1.equals(s2) o s1.equalsIgnoreCase(s2)
Escapar comillas dentro de String"Ella dijo: \"Hola\""

Conclusión

En Java las comillas simples ' y dobles " tienen roles distintos: ' para char (un carácter) y " para String (cadenas). Saber la diferencia evita errores de tipo y comparaciones incorrectas.