Bienvenidos a otro capítulo de este Curso Gratis de Java para Hackers – Sintaxis Básica de Java en 2024. Comparte este articulo y síguenos para recibir más capítulos, guías y cursos gratis.

Este curso está en constante actualización. Tendrá revisiones y actualizaciones anuales y correcciones y mejoras mensuales. Este curso está en un ciclo de crecimiento y mejora constante, agradecemos su apoyo difundiendo, compartiendo, comentando o simplemente leyéndolo.

Tabla de contenidos

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Lenguajes de programación vs Lenguaje natural

Un lenguaje es un Estilo y modo de hablar y escribir de cada persona en particular.  Es una serie de símbolos que sirven para transmitir uno o más mensajes (ideas) entre dos entidades diferentes. Un lenguaje lo usamos entre humanos para comunicarnos, expresar nuestros sentimientos, o incluso de forma colaborativa para llegar a un fin. En las computadoras, nosotros usamos un lenguaje de programación para decirle qué hacer, cómo hacerlo, a través de qué recursos. Algunos lenguajes permiten ser especifico con las instrucciones.

Consideraciones generales sobre los lenguajes de programación

Los lenguajes de programación son formas de comunicación universal que mantienen, en general, criterios modelo y que son empleados por aquellas personas que desarrollan e interpretan productos informáticos. Los lenguajes naturales son los que hablamos y escribimos los seres humanos: inglés, español, italiano, etc. Son dinámicos, ya que, constantemente, incorporan nuevas variaciones, palabras y significados. Por el contrario, los lenguajes formales son rígidos y se construyen a partir de un conjunto de símbolos (alfabeto) unidos por un conjunto de reglas (gramática). Los lenguajes de programación son lenguajes formales.

En este sentido, los lenguajes de programación responden a escenarios en los cuales se genera una serie de códigos e instrucciones que pueden ser leídos e interpretados en la medida en la que cumplen una serie de requisitos y estilos, previamente establecidos por sus desarrolladores. Por cuanto en general, los lenguajes de programación deben responder a lo siguiente:

El lenguaje de programación debe ser universal

Es decir, cualquier problema debe tener una solución que pueda ser programada en el lenguaje y dicha solución ser implementada en cualquier computadora. Este requisito es uno de los más fuertes y pocos lenguajes lo poseen. Se dice que cualquier lenguaje en el cual pueden definirse funciones recursivas se considera universal.

Del otro lado, un lenguaje sin recursión ni iteración no puede ser universal. Existen ciertos lenguajes de aplicación que no son universales, pero sí podrían ser razonablemente descritos así mismos como lenguajes de programación. El lenguaje de programación debe ser implementable en una computadora, es decir, debe ser posible ejecutar un programa en términos del lenguaje en cualquier máquina.

La notación matemática generalmente no es implementable porque en su notación es posible formular problemas que no pueden ser resueltos por cualquier computadora. Los lenguajes naturales tampoco son implementables por razones totalmente diferentes: ellos son tan imprecisos y tienden a ser muy ambiguos.

Gramática

Responde al qué palabras o frases son correctas.  Analiza cómo están estructuradas las oraciones, palabras/tokens, para que el intérprete las pueda entender correctamente.

  • Secuencias y símbolos que forman palabras validas
  • Sintaxis para formar frases del lenguaje

Sintaxis

La sintaxis de un lenguaje de programación está relacionada con la forma de los programas; por ejemplo, cómo es que las expresiones, comandos, declaraciones, etc. son puestos juntos en un programa. La sintaxis de un lenguaje influye en cómo los programas son escritos por el programador, leídos por otro programador y traducidos por la computadora. Los lenguajes siguen reglas que determinan la validez de las sentencias. Este conjunto de reglas define la sintaxis y está determinada por:

  • Reglas sintácticas: definen reglas de mayor complejidad a partir de construcciones más complejas mediante la combinación de elementos léxicos (por ejemplo: a = a + 1).
  • Elementos: Alfabeto, identificadores, palabras reservadas; espacios en blanco; símbolos de operadores; expresiones; delimitadores de código; comentarios.
  • Metalenguajes: se encargan de definir las reglas que establecen cómo se deben combinar los símbolos y elementos de un lenguaje de programación.
  • Es deseable que la sintaxis de un lenguaje sea de fácil lectura, escritura y análisis en busca de errores, y que no posea ambigüedades.
  • Responde a crear frases correctas para  expresar la receta.

Sintaxis de Java

Java tiene un conjunto de palabras reservadas y un número no limitado de nombres para los identificadores de variables, constantes, clases y objetos, definidos por el usuario en momento de escribir la aplicación. Está definido en el conjunto de caracteres del sistema Unicode. Java es un lenguaje de programación que tiene un conjunto de palabras reservadas y un número no limitado de nombres para los identificadores de variables, constantes, clases y objetos, definidos por el usuario en momento de escribir la aplicación.

 Tiene como característica especial que esta definido en el conjunto de caracteres del sistema Unicode. Antes de Unicode, predominaban muchos estándares de lenguaje para representar los caracteres lo que causaba dos problemas:

un valor de código de EL puede corresponderá letras diferentes en los diversos estándares de lenguaje; en las codificaciones para lenguajes con conjuntos de caracteres extendidos, estos últimos tienen longitud variable. Algunos caracteres comunes se codifican como bytes individuales y otros requieren dos o más bytes(por ejemplo, los ideogramas chinos, japoneses, coreanos).

Sintaxis básica

Acerca de los programas Java, es muy importante tener en cuenta los siguientes puntos.

  • Sensibilidad entre mayúsculas y minúsculas: Java distingue entre mayúsculas y minúsculas, lo que significa que el identificador Hola y Hola tendrían un significado diferente en Java.
  • Nombres de clase : para todos los nombres de clase, la primera letra debe estar en mayúscula. Si se utilizan varias palabras para formar un nombre de clase, la primera letra de cada palabra interna debe estar en mayúscula.
    Ejemplo : clase MyFirstJavaClass
  • Nombres de métodos : todos los nombres de los métodos deben comenzar con una letra minúscula. Si se utilizan varias palabras para formar el nombre del método, entonces la primera letra de cada palabra interna debe estar en mayúsculas.
    Ejemplo : public void myMethodName()
  • Nombre del archivo de programa : el nombre del archivo del programa debe coincidir exactamente con el nombre de la clase.
    Al guardar el archivo, debe guardarlo usando el nombre de la clase (recuerde que Java distingue entre mayúsculas y minúsculas) y agregar ‘.java’ al final del nombre (si el nombre del archivo y el nombre de la clase no coinciden, su programa no compilará ).
    Pero tenga en cuenta que, en caso de que no tenga una clase pública presente en el archivo, el nombre del archivo puede ser diferente al nombre de la clase. Tampoco es obligatorio tener una clase pública en el archivo.
    Ejemplo : suponga que ‘MyFirstJavaProgram’ es el nombre de la clase. Luego el archivo debería guardarse como ‘MyFirstJavaProgram.java’
  • public static void main(String args[]) – El procesamiento del programa Java comienza desde el método main(), que es una parte obligatoria de cada programa Java.

Semántica

La semántica de un lenguaje de programación está relacionada con el significado de los programas; por ejemplo, cómo ellos se comportarán cuando se ejecuten en una computadora. La semántica de un lenguaje determina cómo los programas son compuestos por el programador, entendidos por otros programadores e interpretados por la computadora. La sintaxis es importante; pero la semántica es más importante aún. Responde a : ¿qué es una receta?  y está determinada por:

  • Reglas léxicas: definen el conjunto de caracteres del lenguaje y la forma en la que se combinan para formar sentencias válidas.
  • El significado que toma cada uno de los elementos de un lenguaje de programación de acuerdo al contexto define la semántica del lenguaje. La sintaxis no tiene en cuenta el contexto, mientras que la semántica sí lo hace.
  • Las variables, los valores y las expresiones son algunos de los elementos principales. Estos elementos tienen una semántica que indica cómo debe definírselos.
  • chequeo de tipos de datos en expresiones. Este depende del contexto, porque debe conocerse el tipo de dato esperado y el que actualmente se recibe de la expresión, y determinar si son compatibles.
  • si se utiliza el operador aritmético suma en una expresión, entonces el tipo de dato esperado es numérico y los operandos deben ser valores numéricos también.

En programación son los ciclos, las variables, etc. Una vez que hemos comprobado que está correctamente escrita, vemos si lo que está escrito es una operación correcta. No podemos dividir dos frases, pero si podemos sumarlas (concatenarlas) Esto viene a ser que escribamos cosas que podamos interpretar. Si la función que creamos es para hacer el cuadrado de un número, no vamos a poner que se divida ese número.

Al leerlo no sabríamos realmente que esta haciendo ese programa.

  • Variables
  • Funciones
  • Clases
  • Ciclos

Semántica en Java

En este contexto, se puede referir que existen diversos lenguajes, tales como Java, JavaScript, Python, C#, PHP, C/C++, entre otros. Cada uno con características y aplicaciones diversas, ofrecen una inmensa gama de oportunidades a los desarrolladores para dar respuesta a las necesidades de la sociedad actual.

En el caso específico de Java —uno de los lenguajes de programación más ampliamente utilizados en el mundo por sus características de uso genérico y fácil adaptabilidad a diversos escenarios—, este es, en principio, un lenguaje de programación orientado a objetos, que data de los años 90. En un principio, pertenecía a Sun Microsystems, y luego fue adquirido por Oracle Corporation. Un objetivo clave de Java es poder escribir programas que se ejecuten en una gran variedad de sistemas computacionales y dispositivos controlados por computadora. A esto se le conoce como «escribir una vez, ejecutar en cualquier parte»

Convenciones de Código para el lenguaje de programación

Las convenciones de código son importantes para los programadores por un gran número de razones:

  • El 80% del coste del código de un programa va a su mantenimiento.
  • Casi ningún software lo mantiene toda su vida el código  original.
  • Las convenciones de código mejoran la lectura del software, permitiendo entender código nuevo mucho más rápidamente y más a fondo.
  • Si distribuyes tu código fuente como un producto, necesitas asegurarte de que está bien hecho y presentado como cualquier otro producto. Para que funcionen las convenciones, cada persona que escribe software debe seguir la convención. Todos.

 ¿Qué son los tokens en Java?

En Java, una gran aplicación Java consta de miles de líneas de código. Cada programa tiene clases y métodos que contienen declaraciones y expresiones para realizar diversas operaciones. ¿Te has preguntado cuál es su esencia? En Java se denominan tokens y son el elemento más pequeño, también conocido como bloques de construcción de un programa Java.

En términos simples, un token en Java es un pequeño bloque de construcción de un programa en Java que tiene significado para el compilador de Java. Estos componentes constan de constantes , variables y operadores . 

Un programa Java es una colección de clases y métodos, los métodos son un conjunto de declaraciones y expresiones diferentes. Un compilador de Java divide la línea de código en pequeños elementos. 

Este componente significativo más pequeño en un programa se conoce como token en Java. El compilador de Java utiliza estos tokens para la construcción de declaraciones y expresiones y para detectar errores. Los tokens están separados por delimitadores, pero no forman parte de los tokens de Java. 

Tipos de tokens en Java

Aquí está la lista de diferentes tokens en Java:

  • Palabras clave
  • Identificadores
  • Literales
  • Operadores
  • Separadores
  • Comentarios

Echemos un vistazo a la explicación detallada de cada uno de estos.

Palabras clave (reservadas) Java

Java cuenta con un conjunto de palabras claves (keywords) que tienen un significado especial para el lenguaje y no pueden ser utilizadas como identificadores.  Cualquier intento de utilización de estas palabras como identificadores producirá un error de compilación.

La siguiente lista muestra las palabras reservadas en Java. Estas palabras reservadas no se pueden utilizar como constantes o variables ni como ningún otro nombre identificador.

Las palabras clave son palabras predefinidas o reservadas que se utilizan en un lenguaje de programación con un significado especial para el compilador de Java. Se les asigna una función o tarea especial y los usuarios no pueden cambiarlos. 

Como las palabras clave son parte de la sintaxis de Java y los nombres de referencia del compilador de Java, no se pueden utilizar como variables o identificadores. Además, siempre deben escribirse en minúsculas, teniendo en cuenta que Java es un lenguaje que distingue entre mayúsculas y minúsculas. 

A continuación se listan estas palabras claves:

Abstract (Abstracto)

Según el diccionario, la abstracción es la cualidad de tratar con ideas en lugar de eventos. Se utiliza para declarar una clase o método abstracto . Un método sin definición se llama método abstracto y la clase con ese método se llama clase abstracta. Declarar una clase o un método como abstracto significa que se implementará más adelante en la subclase. 

Assert (Afirmar)

 La palabra clave assert se utiliza en Java para definir la aserción. Una afirmación es una declaración en Java que garantiza la exactitud de cualquier suposición que se haya realizado en el programa. Describe un predicado colocado en un programa Java y permite a los programadores verificar rápidamente las suposiciones en un programa. 

Boolean (Boleano)

 El tipo de datos booleano es uno de los ocho tipos de datos primitivos admitidos por Java. Proporciona medios para crear variables de tipo booleano que pueden aceptar un valor booleano como verdadero o falso. Esta palabra clave en Java define una variable booleana que solo toma valores verdaderos o falsos. Por defecto, su valor es falso.

boolean c = true

Break (Romper)

Es una declaración de control que se utiliza para detener la ejecución del bucle y salir de él. La declaración de interrupción en el lenguaje de programación Java tiene los dos usos siguientes:

  • Cuando la instrucción break se encuentra dentro de un bucle, el bucle termina inmediatamente y el control del programa se reanuda en la siguiente instrucción que sigue al bucle.
  • Se puede utilizar para terminar un caso en la declaración de cambio .
int i=0;
     while(i<10){
       if(i==4)
           break;
       i++;
     }

byte

Es un tipo de datos que puede contener valores de 8 bits. El tipo de datos byte es uno de los ocho tipos de datos primitivos admitidos por Java. Proporciona medios para crear variables de tipo byte que pueden aceptar un valor de byte.

Case (Caso)

La palabra clave case es parte de la declaración de cambio que permite probar la igualdad de una variable con una lista de valores. Esta palabra clave se utiliza en declaraciones de cambio para especificar diferentes casos coincidentes y marcar bloques de texto dentro de la declaración de cambio. 

 int i=1;
     switch(i){
       case 1:
         System.out.println(yes)    
         break;
     }

Catch (Atrapar)

Una excepción (o evento excepcional) es un problema que surge durante la ejecución de un programa. Se utiliza junto con el bloque try y el bloque finalmente opcional. Detecta excepciones generadas por declaraciones de prueba. 

Char (Carácter )

El tipo de datos char es uno de los ocho tipos de datos primitivos admitidos por Java. Esta palabra clave puede almacenar caracteres Unicode de 16 bits sin firmar definidos en el juego de caracteres Java. 

char ch = ‘a’;

Class (Clase)

Java es un lenguaje orientado a objetos. Como lenguaje que tiene la característica Orientado a Objetos. Esta palabra clave de Java define un tipo específico de objeto y declara una nueva clase. 

class A{
   //statements
}

Const (Constante)

La palabra clave Const se utiliza para definir un valor constante o métodos/clases finales en Java. Esta Palabra clave que no se utiliza actualmente

int i=0;
while(i<10){
  if(i==4){
     i++;
     continue;
  }
System.out.println(i);
   i++;
}

Continue (continuar)

La palabra clave Continue se puede utilizar en cualquiera de las estructuras de control de bucle. Envía el control de regreso al bucle y omite todas las declaraciones posteriores en un programa.

int i=0;
while(i<10){
  if(i==4){
     i++;
     continue;
  }
System.out.println(i);
   i++;
}

Default (Por defecto / Predeterminado)

La palabra clave defaul es parte de la declaración de cambio que permite probar la igualdad de una variable con una lista de valores. Esta palabra clave se puede utilizar opcionalmente en la instrucción de cambio ejecutada cuando ningún caso coincide con el valor dado. 

     int i=1;
     switch(i){
       case 1:
         System.out.println(yes)   
         break;
       default:
         System.out.println(-1);
     }

Do (hacer)

Un bucle do… while es similar a un bucle while, excepto que se garantiza que un bucle do… while se ejecutará al menos una vez.  Se utiliza junto con el bucle while para iniciar un bucle do- while en Java.

     int i=1;
     do{
         System.out.println(yes);   
         i++;
     }while(i<10);

Double (doble)

El tipo de datos doble es uno de los ocho tipos de datos primitivos admitidos por Java.

For example, double d = 4.6786;

Else  (de otro modo)

Una declaración if puede ir seguida de una declaración else opcional , que se ejecuta cuando la expresión booleana es falsa. Se utiliza con la declaración if para probar la expresión booleana. Indica bancos alternativos en una declaración if. 

if(1==2){
 System.out.println(true);
}
else{
 System.out.println(false);
}

Enum (enumeración)

La clase Java Enum es la clase base común de todos los tipos de enumeración del lenguaje Java. Esta palabra clave de Java se utiliza para declarar un tipo enumerado. La enumeración extiende la clase base. 

Extends (se extiende)

Es la palabra clave utilizada para heredar las propiedades de una clase. La siguiente es la sintaxis de la palabra clave extends. Esta palabra clave se utiliza al declarar una clase e indica que una clase se deriva o se hereda de otra clase o interfaz. 

class A extends B

final

La palabra clave final se utiliza para definir un valor constante o métodos/clases finales en Java. La palabra clave final especifica que no podemos cambiar una entidad una vez que se declara final. Esto significa que una variable almacena un valor constante, una clase final no puede tener subclases o el método no se anulará. 

Finally (Finalmente)

La palabra clave finalmente se utiliza para definir un bloque finalmente. El bloque finalmente sigue a un bloque try o un bloque catch. Un bloque de código finalmente siempre se ejecuta, independientemente de que se produzca una excepción. Indica un bloque, un código utilizado con una estructura try-catch que se ejecutará siempre.

Float ( flotar)

El tipo de datos flotante es uno de los ocho tipos de datos primitivos admitidos por Java. Proporciona medios para crear variables de tipo flotante que pueden aceptar un valor flotante.

float f = 4.5f;

For (Para)

Un bucle for es una estructura de control de repetición que le permite escribir de manera eficiente un bucle que debe ejecutarse una cantidad específica de veces.

for(int i=0;i<100;i++){
                //Statements..
              }

Se utiliza para recorrer un conjunto de declaraciones en un programa y para iniciar un bucle for. 

goto

La declaración goto no es compatible actualmente con Java. Se mantiene como palabra clave reservada para el futuro. Como alternativa, Java admite etiquetas con declaraciones de interrupción y continuación. Esta Palabra clave que no se utiliza actualmente

If (si)

Una declaración if consta de una expresión booleana seguida de una o más declaraciones. Esta es una de las palabras clave comunes utilizadas en Java. especifica una declaración if y prueba una expresión booleana.

if(1==2){
  System.out.println(true);
}

Implement (implementos)

Generalmente, la palabra clave implements se usa con clases para heredar las propiedades de una interfaz. Se utiliza en una definición de clase y especifica que una clase implementa una interfaz. 

Import (Importar)

El teclado de importación se utiliza en el contexto de los paquetes. Esta palabra clave se utiliza para incluir clases o paquetes Jav completos a los que se hará referencia más adelante en un programa Java sin incluir el nombre del paquete en la referencia. 

import java.util.Scanner;

Instanceof (instancia de)

La palabra clave instancia de es un operador que se utiliza sólo para variables de referencia de objetos. La palabra clave instancia de comprueba si un objeto es una instancia de una clase específica o si implementa una interfaz. 

Int (Entero)

El tipo de datos int es uno de los ocho tipos de datos primitivos admitidos por Java. Este es un tipo de datos que puede contener un entero con signo de 32 bits. 

int a = 5;

Interface (Interfaz)

Una interfaz es un tipo de referencia en Java. Es similar a la clase. Es una colección de métodos abstractos. Declara una clase o interfaz especial que contiene solo campos finales, métodos abstractos e interfaces estáticas. Pero las clases pueden implementarlos más tarde.

Long (Largo)

El tipo de datos largo es uno de los ocho tipos de datos primitivos admitidos por Java. Es otro tipo de datos en Java que contiene un entero de 64 bits. 

Native (Nativo)

Especifica que un método se implementa en su código nativo, es decir, código específico de la plataforma, utilizando la interfaz nativa. 

New (Nuevo)

Crea nuevos objetos e instancias de una clase.

Null (Nulo/Vacio)

Indica que una referencia no se refiere a nada.

Package (Paquete)

Los paquetes se utilizan en Java para evitar conflictos de nombres, controlar el acceso, facilitar la búsqueda/localización y el uso de clases, interfaces, enumeraciones y anotaciones, etc. Se utiliza para declarar un paquete Java, que es un grupo de clases e interfaces. 

Private (Privado)

Solo se puede acceder a los métodos, variables y constructores declarados privados dentro de la propia clase declarada. Es un modificador de acceso que se utiliza para indicar que se accede a un método o variable sólo en la clase en la que está declarado. 

Protected (Protegido)

El modificador de acceso protegido no se puede aplicar a clases e interfaces. Este modificador de acceso indica que se puede acceder a un método o variable en la clase en la que está declarado o en una subclase de la clase en la que está declarado, o en clases en el mismo paquete. 

Public (Publico)

Se puede acceder a una clase, método, constructor, interfaz, etc. declarado público desde cualquier otra clase. También es un modificador de acceso que se utiliza para especificar variables, clases , métodos e interfaces a las que pueden acceder los miembros de una clase en toda la aplicación. 

Return (Regresar)

Esta palabra clave envía control, indica el final de la ejecución de un método y devuelve un valor de un método llamado. 

int cal(int i){
                return i+1;
             }

Short (Corto)

Al asignar diferentes tipos de datos a las variables, puede almacenar números enteros, decimales o caracteres en estas variables. Este tipo de datos es capaz de contener un número entero de 16 bits.

Stactic (Estatico)

La palabra clave estática se utiliza para crear variables que existirán independientemente de cualquier instancia creada para la clase. Declara un método o variable a un método de clase en lugar de limitarse a un objeto específico. 

Strictfp

Esta palabra clave de Java restringe la precisión y el redondeo de los cálculos de punto flotante para garantizar la portabilidad. 

Super (Súper)

La súper palabra clave es similar a esta palabra clave. Se refiere a la clase base de la clase actual y se utiliza en un método o constructor de clase. 

Switch (Cambiar)

Una declaración de cambio permite probar la igualdad de una variable con una lista de valores. Esta declaración ejecuta un código basado en el valor de la prueba. Después de esto, el valor de prueba coincide con cada caso dentro de la declaración de cambio y ejecuta el caso de prueba coincidente. 

Synchronized (Sincronizado)

La palabra clave especifica secciones críticas en un código multiproceso en Java. 

This (Esto)

esta palabra clave es una palabra clave muy importante para identificar un objeto. A continuación se detalla el uso de esta palabra clave. Se utiliza para hacer referencia al objeto actual en un constructor o método y representa una instancia de una clase en la que se utiliza. 

Throw (Tirar)

Se utiliza para crear una excepción explícitamente, principalmente excepciones personalizadas. La palabra clave va seguida de una instancia.

Throws (Lanzar)

Si un método no maneja una excepción marcada, el método debe declararla usando la palabra clave throws. Se utiliza para declarar una excepción e indica qué excepciones generará un método en Java. 

Transient (Transitorio)

La serialización es un concepto mediante el cual podemos escribir el estado de un objeto en un flujo de bytes para poder transferirlo a través de la red (usando tecnologías como JPA y RMI). Esta palabra clave indica que una variable no forma parte del estado persistente de un objeto. Se utiliza en seralización. Si define un miembro de datos como transitorio, no será serializable. 

Try (Intentar)

Un método detecta una excepción utilizando una combinación de palabras clave try y catch . La palabra clave define e inicia un bloque de código probado para el manejo de excepciones.

Void (Vacio)

Este tipo de datos especifica que un método no tiene un valor de retorno, lo que significa que no devolverá nada.

 void print(){
    System.out.println(«Hello»);
 }

Volatile (volátil)

Ir muestra que una variable puede cambiar de forma asincrónica.

While (Mientras)

Una declaración de bucle while en el lenguaje de programación Java ejecuta repetidamente una declaración de destino siempre que una condición dada sea verdadera. Se utiliza para iniciar un bucle while . Ejecuta un bloque de declaraciones en función de si una condición específica es verdadera o falsa.

int i=0;
while(i<10){
    System.out.println(i);
    i++;
}

Sistema Unicode

Unicode es una codificación de caracteres estándar internacional universal que es capaz de representar la mayoría de los idiomas escritos del mundo. Antes de Unicode, existían muchos estándares lingüísticos:

  • ASCII (Código estándar americano para el intercambio de información) para Estados Unidos.
  • ISO 8859-1 para idiomas de Europa occidental.
  • KOI-8 para ruso.
  • GB18030 y BIG-5 para chino, etc.

¿Por qué java usa el sistema Unicode?

Antes de Unicode, predominaban muchos estándares de lenguaje para representar los caracteres de un idioma a saber: “ASCII para los Estados Unidos. ISO8859-1 para el idioma de Europa Occidental. KOI-8 para el Ruso con sus caracteres cirílicos. GB18030 y BIG-5 para el chino”. El uso de estos en los lenguajes de programación causó dos problemas: un valor de código puede corresponder a letras diferentes en los diversos estándares de lenguaje; y en las codificaciones para lenguajes con conjuntos de caracteres extendidos, estos últimos tienen longitud variable.

Unicode permite unificar todo en un solo estándar y con una amplia cantidad de caracteres definidos, ya que cuenta con las vocales acentuadas y, entre otras consonantes propias de cada uno de los idiomas incluidos, se encuentra la ñ. Se unifican todos los diferentes idiomas  ya no es necesario escribir anio o ano para ponerle el nombre a una variable como año.

  • Algunos caracteres comunes se codifican como bytes individuales y otros requieren dos o más bytes (por ejemplo, los ideogramas chinos, japoneses, coreanos).
  • Unicode permite unificar todo en un solo estándar y con una amplia cantidad de caracteres definidos, ya que cuenta con las vocales acentuadas y, entre otras consonantes propias de cada uno de los idiomas incluidos, se encuentra la ñ.
  • Se unifican todos los diferentes idiomas Por lo tanto, ya no es necesario escribr anio o ano para ponerle el nombre a una variable como año.
  • Sistema unicode es una codificación de caracteres estándar internacional universal que es capaz de representar la mayoría de los idiomas escritos del mundo.

Problema

Esto causó dos problemas: Un valor de código particular corresponde a diferentes letras en los distintos estándares lingüísticos. Las codificaciones para idiomas con conjuntos de caracteres grandes tienen una longitud variable. Algunos caracteres comunes se codifican como un solo byte, otros requieren dos o más bytes.

Solución

Para resolver estos problemas, se desarrolló un nuevo estándar de lenguaje, es decir, el sistema Unicode. En Unicode, el carácter contiene 2 bytes, por lo que Java también usa 2 bytes para los caracteres.

  • valor más bajo: \u0000
  • valor más alto: \uFFFF

ASCII (American Standard Code for Information Interchange)

– ANSI X3.4-1968, 7 bits (128 símbolos)

– ISO 8859-1 = Latin-1, 8 bits (256 símbolos)

UNICODE, ISO/IEC 10646, 16 bits (65536 símbolos)

Entonces, para admitir códigos de aplicaciones multinacionales, algunos caracteres usaban un solo byte, otros dos. Un mismo código puede representar un carácter diferente en un idioma y puede representar otros caracteres en otro idioma.

Para superar las deficiencias anteriores, se desarrolló el sistema Unicode donde cada carácter está representado por 2 bytes. Como Java fue desarrollado para lenguajes multilingües, adoptó el sistema Unicode. El valor más bajo está representado por \u0000 y el valor más alto está representado por \uFFFF .

Enfoques: trabajar con caracteres y valores Unicode

Hay dos enfoques para trabajar con caracteres Unicode en Java: usar secuencias de escape Unicode y almacenar directamente caracteres Unicode.

El primer enfoque implica representar caracteres Unicode mediante secuencias de escape y es útil cuando los caracteres no se pueden escribir ni mostrar directamente en el código Java. El segundo enfoque implica almacenar directamente caracteres Unicode en variables y es más conveniente cuando los caracteres se pueden escribir o mostrar directamente.

La elección del enfoque depende de los requisitos específicos del programa. Sin embargo, en general, el Método 2 es más simple y conveniente cuando los caracteres se pueden escribir o mostrar directamente, mientras que el Método 1 es necesario cuando no es posible.

Uso de secuencias de escape Unicode

Una forma de almacenar caracteres Unicode en Java es mediante secuencias de escape Unicode. Una secuencia de escape es una serie de caracteres que representan un carácter especial. En Java, una secuencia de escape Unicode comienza con los caracteres ‘\u’ seguidos de cuatro dígitos hexadecimales que representan el punto del código Unicode del carácter deseado.

Ejemplo: uso de secuencias de escape Unicode

package com.achirou;

public class UnicodeCharacterDemo {

   public static void main (String[]args) {                   

      //Unicode escape sequence

      char unicodeChar = '\u0041';

      // point for 'A'

      System.out.println("Stored Unicode Character: " + unicodeChar);

   }

}

Compile y ejecute el programa anterior. Esto producirá el siguiente resultado:

Producción

Stored Unicode Character: A

En el fragmento de código anterior, la secuencia de escape Unicode ‘\u0041’ representa el carácter ‘A’. La secuencia de escape se asigna a la variable char unicodeChar y luego el carácter almacenado se imprime en la consola.

Almacenamiento de valores Unicode directamente

Alternativamente, puede almacenar directamente un carácter Unicode en una variable char encerrando el carácter entre comillas simples. Sin embargo, es posible que este enfoque no sea viable para caracteres que no se pueden escribir directamente con un teclado o que no son visibles, como los caracteres de control.

Ejemplo 1: asignación de caracteres Unicode a una variable

package com.achiruo;

public class UnicodeCharacterDemo {

   public static void main(String[] args) {

      // Storing Unicode character directly

      char unicodeChar = 'A';

      // Directly storing the character 'A'

      System.out.println("Stored Unicode Character: " + unicodeChar);

   }

}

Compile y ejecute el programa anterior. Esto producirá el siguiente resultado:

Producción

Stored Unicode Character: A

En este ejemplo, el carácter ‘A’ se incluye directamente entre comillas simples y se asigna a la variable char unicodeChar. Luego, el carácter almacenado se imprime en la consola.

Ejemplo 2: Asignación de valores Unicode a variables

package com.laprovittera;

public class UnicodeCharacterDemo {

   public static void main(String[] args) {

      // Storing Unicode characters using escape sequences

      char letterA = '\u0041';

      char letterSigma = '\u03A3';

      char copyrightSymbol = '\u00A9';

      // Storing Unicode characters directly

      char letterZ = 'Z';

      char letterOmega = 'Ω';

      char registeredSymbol = '®';

      // Printing the stored Unicode characters

      System.out.println("Stored Unicode Characters using Escape Sequences:");

      System.out.println("Letter A: " + letterA);

      System.out.println("Greek Capital Letter Sigma: " + letterSigma);

      System.out.println("Copyright Symbol: " + copyrightSymbol);

      System.out.println("\nStored Unicode Characters Directly:");

      System.out.println("Letter Z: " + letterZ);

      System.out.println("Greek Capital Letter Omega: " + letterOmega);

      System.out.println("Registered Symbol: " + registeredSymbol);

   }

}

Compile y ejecute el programa anterior. Esto producirá el siguiente resultado:

Producción

Stored Unicode Characters using Escape Sequences:
Letter A: A
Greek Capital Letter Sigma: Σ
Copyright Symbol: ©

Stored Unicode Characters Directly:
Letter Z: Z
Greek Capital Letter Omega: Ω
Registered Symbol: ®

Ejemplo 3: Asignación de caracteres y valores Unicode a variables

Este ejemplo demuestra cómo manipular los caracteres Unicode almacenados. Calcula la diferencia entre la letra mayúscula ‘A’ y la letra minúscula ‘a’ y usa esa diferencia para calcular la letra mayúscula ‘C’. Luego calcula la letra minúscula ‘c’ sumando 32 al punto del código Unicode de la letra mayúscula ‘C’. Los caracteres Unicode manipulados se imprimen en la consola.

package com.laprovittera;

public class UnicodeCharacterDemo {

   public static void main(String[] args) {

      // Storing Unicode characters using escape sequences

      char letterA = '\u0041';

      char letterSmallA = '\u0061';

      // Storing Unicode characters directly

      char letterB = 'B';

      // Manipulating the stored Unicode characters

      int difference = letterA - letterSmallA;

      char letterC = (char) (letterB + difference);

      char letterSmallC = (char) (letterC + 32);

      // Printing the manipulated Unicode characters

      System.out.println("Manipulated Unicode Characters:");

      System.out.println("Difference between A and a: " + difference);

      System.out.println("Calculated Letter C: " + letterC);

      System.out.println("Calculated Letter c: " + letterSmallC);

   }

}

Compile y ejecute el programa anterior. Esto producirá el siguiente resultado:

Producción

Manipulated Unicode Characters:
Difference between A and a: -32
Calculated Letter C: «
Calculated Letter c: B

Conclusión

En Java, puede almacenar caracteres Unicode utilizando caracteres literales empleando secuencias de escape Unicode o encerrando directamente los caracteres entre comillas simples. Ambos enfoques tienen sus ventajas y limitaciones. Las secuencias de escape proporcionan una forma coherente de representar cualquier carácter Unicode en el código fuente, mientras que almacenar caracteres directamente es más conveniente cuando se trata de caracteres que se pueden escribir o mostrar fácilmente.

Este artículo proporciona un algoritmo para almacenar caracteres Unicode en Java, analiza dos enfoques diferentes para almacenar estos caracteres y demuestra ejemplos de trabajo para cada enfoque. Comprender estas técnicas ayudará a los desarrolladores a crear aplicaciones que puedan funcionar sin problemas con diversos lenguajes y secuencias de comandos, aprovechando el poder de Unicode en la programación Java.

Estilo de escritura de las sentencias e identificadores en Java

Es sensible a las mayúsculas, es decir que una variable llamada Hola se distinguirá, en Java, de otra llamada hola.  Los identificadores son palabras usadas para nombrar una variable, constante, clase y objetos. Es una regla difundida para los identificadores es utilizar nombres significativas, es decir usar varias palabras.

A estas palabras pueden separarse con espacio, (no es conveniente) por lo que, cuando un identificador requiere mas de una palabra como: códigoclientepotencial, usa la simple concatenación y puede hacer que un nombre largo con varias palabras resulte confuso.

Se necesita un método de delimitación de palabra (para que los lectores posteriores puedan interpretar más fácilmente qué caracteres pertenecen a cada palabra).

CamelCase

Se pueden usar guiones (código_cliente_potencial), pero se incrementa la longitud y existe un límite, que en algunos lenguajes es de 8 caracteres y en otros, de 30 caracteres. Como recomendación de escritura de programas con Java, existe una forma de escribir las sentencias de un programa. Este estilo de escritura combina de la mejor forma las mayúsculas y minúsculas y se denomina CamelCase.

Esta forma de escribir (usada tambien para otros lenguajes) se recomienda que sea adoptada por todos los integrantes del grupo de programación para facilitar el trabajo de leer el código y entender mas rápidamente las características de un identificador.  CamelCase es un estilo de escritura especial que permite escribir las palabras que contiene un nombre, combinando minúsculas y mayúsculas. En vez de código_cliente, al usar Camel Case, sería códigoCliente, y nos ahorraríamos un carácter en cada identificador.

Y si fueran necesarias mas palabras, el ahorro sería mayor. Por ejemplo: códigoClientePrincipal contra código_cliente_principal o ideaGenialParaCodificar contra idea_genial_para_codificar.  Escribir con CamelCase ayuda a hacer mas legible el código cuando se requiere más de una palabra para identificar el nombre de una variable, constante u otro. Evita usar _ y el – como separadores que agregan longitud a los nombres de identificadores (este estilo con guiones es denominado snake_case).

Reglas en Java:

Se llama CamelCase porque los nombres, al usar mayúsculas en el medio de la palabra, se asemejan al perfil de un camello.

  • Las palabras reservadas de Java van siempre en minúsculas, por ejemplo: if, class, public, etcétera.
  • Los identificadores pueden contener letras, números y los caracteres especiales $, _. No deben empezar con números.
  • Las variables se inician con minúsculas y el resto de las palabras se inician en mayúsculas, por ejemplo, variableCamelCase.
  • Las constantes deben llevar mayúsculas en todas sus letras, por ejemplo, la constante donde almacenaremos el numero PI se deberá llamar NUMEROPI.
  • Los nombres de clases se inician con mayúsculas y siguen con minúsculas hasta el inicio de la siguiente palabra que la conforma. Por ejemplo, NombreDeUnaClase y nombreDeUnObjeto.

Por ejemplo, los siguientes nombres separados con ; son identificadores válidos y diferentes entre si:

  • variable; VARIABLE; Variable
  • DiaSemana; dia_semana; diasemana;
  • _hola; hola$mundo; cod_clie;
  • main; Char; java
  • mientras que los siguientes identificadores no son válidos:
  • %derecha; #out; 31dias_mes;

Entonces el estilo CamelCaseEstilo de escritura que combina mayúsculas y minúsculas para identificadores de variables, constantes, clases y objetos dentro de un programa, cuando estos requieren másde una palabra para definirlos.  es sensible a las mayúsculas, una variable llamada Hola se distinguirá, en Java, de otra llamada hola.

Separadores

Los separadores o símbolos especiales son puntuadores con significados especiales para los compiladores de Java y no pueden usarse para ningún otro propósito. El uso de separadores en Java ayuda a definir y organizar la estructura del código del programa. A continuación se listan los separadores de código usados en Java y el propósito de cada uno de ellos:

  • ( ) Encierra argumentos en la definición de métodos y también en las llamadas de los mismos.  Delimita expresiones lógicas. Determina la precedencia en expresiones lógicas. Es utilizado para indicar casteos hacia un tipo específico.
  • { } Delimita bloques de código. Puede ser usado para la inicialización de matrices.
  • [ ]  Encierra el tipo de dato que contendrá una matriz. Encierra el tamaño de una matriz. Encierra la referencia a un elemento de una matriz.
  • ; Finaliza una sentencia.
  • , Separa la declaración de varios identificadores del mismo tipo. Separa los argumentos que se envían a un método.
  • . Selecciona un método o atributo de un objeto. Separa paquetes, subpaquetes y clases.
  • : Es usado en la declaración de marcadores. Es usado en declaraciones abreviadas de “if” y “for”.
  • * En Java, el asterisco se utiliza para crear una variable de puntero.

Ejemplo:

public class MiC1ase {

int x = 5;

public static void main(String[]

args) {

MiClase miObjeto = new MiClase() ;

System.out . print1n(mi0bjeto . x) ;

    }

}

Veremos esto en más profundidad en un capítulo dedicado.

Lista de identificadores válidos en Java:

  • identificador válido
  • _guion bajo
  • $ dólar
  • miVariable
  • número de items
  • TAMAÑO MÁXIMO
  • Mi clase
  • calcularárea
  • obtener nombre
  • variable; VARIABLE; Variable
  • DiaSemana; dia_semana; diasemana;
  • _hola; hola$mundo; cod_clie;
  • main; Char; java

Algunos ejemplos de identificadores no válidos en Java son:

  • 123inválido (comienza con un dígito)
  • mi-variable (contiene un guión, lo cual no está permitido)
  • clase (palabra clave reservada)
  • int (palabra clave reservada)
  • %derecha; #out; 31dias_mes;

Es importante tener en cuenta que los identificadores en Java distinguen mayúsculas y minúsculas Algunas recomendaciones en el momento de definir un identificador pueden ser las siguientes:

  • Utilizar palabras completas y no abreviaturas pequeñas difíciles de entender. Esto permite un mejor entendimiento del código.
  • Comenzar el nombre de un identificador con una letra.
  • Si el identificador está compuesto por una sola palabra, es recomendable que todas las letras sean minúsculas.
  • Si el identificador está compuesto por más de una palabra, es recomendable que la primera letra de la primera palabra esté en minúscula y las primeras letras del resto de las palabras siguientes estén en mayúsculas.

Literales

Los literales son similares a las variables pero representan valores fijos en el código fuente. No es posible cambiar sus valores una vez asignados. Los literales los definen los usuarios o programadores y pueden pertenecer a todos los tipos de datos . También se conocen como constantes y se pueden clasificar como literal de cadena, literal entero, literal booleano, etc. 

Java admite cinco tipos de literales:

  • Entero
  • Punto flotante
  • Personaje
  • Cadena
  • Booleano
LiteralTipo
23En t
9,86doble
falso verdaderobooleano
‘K’, ‘7’, ‘-‘carbonizarse
«puntojavat»Cadena
nulocualquier tipo de referencia

Operadores

Los operadores de Java son símbolos especiales que le indican al compilador de Java que realice operaciones matemáticas o aritméticas específicas en uno o más operandos. Los operadores en Java se pueden dividir en diferentes categorías según la funcionalidad que ofrecen. 

Los principales operadores soportados en Java son:

  • Operadores aritméticos
  • Operadores de Asignación
  • Operadores relacionales
  • Operadores unarios
  • Operadores logicos
  • Operadores ternarios
  • Operadores bit a bit
  • Operadores de turno
  • instancia de operador
  • Precedencia y asociatividad
OperadorSímbolos
Aritmética+ , – , / , * , %
unario++ , – – , !
Asignación=, +=, -=, *=, /=, %=, ^=
Relacional==, != , < , >, <= , >=
Lógico&&, ||
Ternario(Condición) ? (Declaración1) : (Declaración2);
Bit a bit& , | , ^ , ~
Cambio<< , >> , >>>

Veremos esto en más profundidad en un capítulo dedicado.

No te detengas, sigue avanzando

Aquí tienes un propósito para este 2024 que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera! El mundo necesita más hackers…

Universidad Hacking. Todo en Ciberseguridad. Curso Completo

Aprende Hacking Ético y Ciberseguridad sin necesitar conocimientos Previos. Practica Hacking Ético y Ciberseguridad aquí

Calificación: 4,6 de 5 (2.877 calificaciones) 15.284 estudiantes Creado por Alvaro Chirou • 1.800.000+ Enrollments Worldwide

Lo que aprenderás

  • Seguridad informática
  • Hacking Ético en profundidad
  • Redes
  • Programación (Python) (Hacking con Python)
  • Análisis de Malware con laboratorios, practicas y ejecución de Malware para que veas su comportamiento.
  • Cómo reforzar tu Privacidad y Anonimato
  • Uso avanzado de Metasploit
  • Top 10 de Owasp Web, Top 10 de Owasp mobile y Top 10 de Owasp API
  • Seguridad informática para empresas
  • Kali linux de 0 a 100, Veremos su suite de herramientas de hacking y como explotar fallos en sistemas.
  • Termux y como hackear desde el celular
  • Seguridad informática server/web, profundizaremos en WordPress
  • Análisis de trafico en Wireshark
  • Y mucho, pero mucho más

¿Esto que significa?

Hoy más que nunca, se necesitan personas capacitadas en este rubro para trabajar.

Por esa razón cree esta formación profesional para compartirte mis conocimientos y experiencia en la materia y puedas iniciar en este mundo del Hacking Ético y Ciberseguridad.

Te voy a estar acompañando en el proceso de aprendizaje, donde si estas empezando desde 0, sin conocimientos previos, no es un impedimento ya que iniciaremos como si no supieras nada de la materia.

Si sos una persona con conocimientos, podrás iniciar directamente en el nivel más avanzado o en el que tu elijas.

Como en todos mis cursos en udemy, tendrás muchísima practica para que materialices lo que vas aprendiendo.

Empieza a aprender ya mismo!

Aprende con nuestros más de 100 cursos que tenemos disponibles para vos

No solo te enseñamos, tambien te guíamos para que puedas conseguir trabajo como desarrollador y hacker…

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Sobre los autores

Álvaro Chirou

Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes serguirme en mis redes:

Laprovittera Carlos

Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:

¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/como-iniciarse-en-ciberseguridad-y-hacking-en-2024/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.

SIGUE APRENDIENDO GRATIS CON NUESTRAS GUIAS

Cómo Iniciarse en Hacking y Ciberseguridad en 2024

Curso Gratis de Programación

Curso Gratis Linux – Capitulo 1 – Introducción a Linux

Curso Gratis de Redes – Capitulo 1 – Tipos de redes y servicios

Como iniciarse en TRY HACK ME – Complete Beginner #1

OSINT #1 Más de 200 Search Tools