1. Code
  2. Coding Fundamentals

Aprenda Java para Android Desarrollo: Sintaxis de Java

También puede proporcionar comentarios después de código en un solo uso de //. Por ejemplo: int x = 7; // First variable called x equals seven
Scroll to top
This post is part of a series called Learn Java for Android Development.
Learn Java for Android Development: Introduction to Java
Learn Java for Android Development: Checking Object Type with Instanceof

Spanish (Español) translation by Elías Nicolás (you can also view the original English article)

En esta serie de tutoriales, se familiarizará con Java, el lenguaje de programación utilizado para desarrollar aplicaciones de Android. Nuestro objetivo es preparar a aquellos que ya están familiarizados con un lenguaje de programación, como PHP o Objective-C, para que se sientan cómodos trabajando con el lenguaje de programación Java y se sumen al desarrollo de aplicaciones para Android. En este tutorial específico, aprenderá los conceptos básicos de la sintaxis de Java, incluyendo cómo crear comentarios, definir variables, crear instrucciones condicionales e iterar mediante bucles. Si eres nuevo en Java, o simplemente buscando para repasar los detalles, ¡esta es la serie de tutoriales para ti!

Empezando

En cuanto a los prerrequisitos, no vamos a hacer muchas suposiciones acerca de su experiencia de programación. Vamos a suponer que usted entiende cómo programar (tal vez en PHP, o Visual Basic o C ++), pero que usted no está familiarizado con los detalles de la programación en el lenguaje Java. No vamos a entrar en los detalles de por qué querrías hacer un bucle for-loop versus un while-loop, pero te mostraremos, en Java, la sintaxis de ambos tipos de bucles. Dicho de otra manera, no vamos a enseñarle a programar; Vamos a proporcionarle ejemplos claros de construcciones y principios de lenguaje Java comúnmente utilizados, a la vez que señalamos algunas sugerencias y trucos específicos para Android.

Lo que necesitarás

Técnicamente, no necesitas herramientas para completar este tutorial, pero sin duda necesitarás para desarrollar aplicaciones de Android.

Para desarrollar aplicaciones de Android (o cualquier otra aplicación de Java, para eso), necesita un entorno de desarrollo para escribir y crear aplicaciones. Eclipse es un entorno de desarrollo muy popular (IDE) para Java y el IDE preferido para el desarrollo de Android. Está disponible gratuitamente para los sistemas operativos Windows, Mac y Linux.

Para obtener instrucciones completas sobre cómo instalar Eclipse (incluidas las versiones compatibles) y el SDK de Android, consulte el sitio web de desarrolladores de Android.

Ahora veamos alguna sintaxis Java más útil.

Comentarios

La mayoría de los lenguajes de programación permiten comentarios y Java no es diferente. Puede encapsular cualquier número de líneas de texto comenzando su comentario con /* y terminando su comentario con */. Por ejemplo:

1
/*    MULTILINE
2
COMMENT  */

También puede proporcionar comentarios después de código en un solo uso de //. Por ejemplo:

1
int x = 7;        // First variable called x equals seven
2
int y = 8;    // Second variable called y equals eight
3
int result = x + y;    // The result variable value should equal 15

Java también tiene un tipo estándar de comentarios llamados Javadoc que pueden utilizarse no sólo para comentar código, sino también crear fácilmente documentación de código. Este tema es bastante grande en su propio, pero aquí es un ejemplo de lo que parece Javadoc comentarios:

1
/** This method does something interesting
2
 *
3
 * @param someValue processed and returned
4
 * @param option changes the type of processing done to someValue
5
 * @return The result of someValue being processed
6
 */
7
public int sampleMethod(int someValue, boolean option) {
8
    //…
9
}

Variables

Una variable es simplemente una pieza de datos. Las variables Java generalmente se dividen en dos categorías:

  • Tipos de datos primitivos, como int, float, double, char, etc.
  • Objetos Java (definidos por una definición de clase)

Las variables se utilizan para diferentes propósitos. A veces las variables se utilizan para almacenar valores que pueden cambiar o modificarse con el tiempo. Por ejemplo, una variable llamada contador puede ser incrementada de vez en cuando. Otras variables, especialmente las variables de clase que permanecen iguales para todas las instancias de una clase dada, deben definirse usando la palabra clave estática. Otras veces las variables pueden representar constantes-estas variables deben usar la palabra clave final para mostrar que no cambian con el tiempo.

Una variable sólo es válida dentro de su territorio, o ambito. El alcance variable a menudo se controla con llaves { }. Cuando se define una variable, es válida dentro de esas abrazaderas. Si intenta acceder a una variable fuera de los tirantes, será indefinida. Las variables de miembro de clase en lenguajes orientados a objetos se llaman a menudo atributos. También pueden llamarse campos o propiedades.

Al igual que otros lenguajes de programación comunes, usted tiene su operador de asignación, el signo igual:

1
int i = 5;

También tienes tus operadores aritméticos como +, -, *, /. Recuerde usar paréntesis para forzar el orden de operaciones según sea necesario:

1
int result = (a + b) / c;

Por último, usted tiene sus típicos operadores unarios, que le permiten modificar una sola variable con una simple declaración:

1
iPositive++;    // increment by one; equivalent to iPositive = iPositive + 1;
2
iPositive --; // decrement by one; equivalent to iPositive = iPositive - 1;

Tenga en cuenta que los operadores de incremento (++) y decremento (-) pueden ser prefijo o postfix, lo que significa que el incremento se puede ejecutar antes o después de que se determinen los condicionales, si el elemento se utiliza en un bucle. Generalmente, nos gusta adherir a las sentencias postfix, por lo que el código es más legible.

Tipos de datos primitivos

Veamos algunos de los tipos de datos primitivos disponibles en el lenguaje de programación Java:

  • byte
    • Una variable de byte es un entero de 8 bits firmado entre -128 y 127. A menudo se utiliza para arrays.
  • short
    • Una variable corta es un entero con signo de 16 bits entre -32.768 y 32.767. Una vez más, a menudo se utiliza para arrays.
  •     Int
    •        Una variable int es un entero de 32 bits firmado entre -2.147.483.648 y 2.147.483.647. Esta es la variable de "número" más utilizada.
  • long
    • Una variable larga es un entero con signo de 64 bits entre -9,223,372,036,854,775,808 y 9,223,372,036,854,775,807. Se utiliza cuando el tipo de datos int no es lo suficientemente grande.
  •   float
    • Una variable flotante es un número de punto flotante de 32 bits de precisión simple.
  • double
    •     Una variable doble es un número de coma flotante de 64 bits de doble precisión. Utilice este tipo de datos para valores decimales
  • .boolean    
    • Una variable booleana tiene sólo dos valores posibles: verdadero true y falso false. Utilice este tipo de datos para declaraciones condicionales.
  •   char
    • Una variable char es un solo carácter Unicode de 16 bits.

Las variables de tipos primitivos se pueden definir especificando el tipo de datos, seguido por el nombre de la variable, luego un signo igual y un valor inicial. Todas las sentencias de Java terminan con un punto y coma. Por ejemplo, la siguiente sentencia de Java define una variable llamada iVal, con un valor inicial de 1:

1
int iVal = 1;

Al igual que muchos otros idiomas, puede definir una matriz basada en cero de un tipo de datos específico. Por ejemplo, lo siguiente define una matriz de tres valores enteros (las primeras cuatro potencias de 2):

1
int[] aiPowersOfTwo;
2
aiPowersOfTwo = new int[4];
3
aiPowersOfTwo [0] = 1;    //  2^0=1
4
aiPowersOfTwo [1] = 2;    //  2^1=2
5
aiPowersOfTwo [2] = 4;    //  2^2=4
6
aiPowersOfTwo [3] = 8;    //  2^3=8

Objetos Java comúnmente utilizados

Las bibliotecas Java proporcionan una serie de objetos útiles para su uso con estructuras de datos comunes. Todos los objetos se derivan de la clase Object. Hay contrapartes de clase para todos los tipos de datos primitivos. Por ejemplo, la clase Integer encapsula un valor int y proporciona una serie de métodos útiles para manipular valores de datos enteros. Por ejemplo, el siguiente código Java instancia una variable entera llamada iVal, crea un objeto Integer usando un constructor que toma un entero y luego usa un método handle disponible en la clase Integer para extraer una variable float equivalente.

1
int iVal = 1;
2
Integer integ1= new Integer(iVal);
3
float f = integ1.floatValue();

Tal vez el objeto más común que va a utilizar en las aplicaciones de Android es el String. La clase String se utiliza para encapsular caracteres de texto legibles por humanos, que a menudo se muestran en la pantalla. Si está modificando o construyendo cadenas de partes más pequeñas, también deseará consultar las clases StringBuffer y StringBuilder.

1
String strHello = new String("Hello World");

Para obtener una lista de tipos de datos Java comunes, la referencia de Android incluye documentación para el paquete java.lang. También puede encontrar los objetos comunes de entrada / salida en el paquete java.io.

Para estructuras de datos más complejas como listas, colas, pilas, fechas y horas, las clases apropiadas están en el paquete java.util.

Por último, las aplicaciones de Android se basan en una serie de clases útiles que definen los componentes de la aplicación comúnmente utilizados, como Actividad, Aplicación, Diálogo y Servicio. Estas clases se pueden encontrar en el paquete android.app.

Permisos de clase y acceso

Puede controlar la visibilidad de una clase, así como sus variables y métodos, especificando el nivel de acceso de un elemento. Los niveles de acceso son públicos, protegidos y privados. En general, si quieres que algo sea accesible desde fuera de una clase, usa public. Si un método o una variable sólo debe ser accesible desde la propia clase, use private. Uso protegido cuando la clase o cualquiera de sus subclases necesitan acceso.

Por ejemplo, la siguiente definición de clase SillySensor define varias variables y métodos con diferentes niveles de acceso:

  • Una variable de clase denominada sensorData, que sólo es visible dentro de la clase
  •     Un constructor público que se puede llamar fuera de la clase
  •    Un método privado llamado calibrate(), que sólo se puede llamar desde la propia clase
  • Un método protegido llamado seedCalibration(), que puede ser llamado desde dentro de la propia clase, o por una subclase
  • Un método público llamado getSensorData(), que puede ser llamado desde cualquier lugar, permitiendo el acceso de "sólo lectura" a la variable sensorData
1
    public class SillySensor
2
    {
3
        private int sensorData;
4
5
        public SillySensor()
6
        {
7
            sensorData=0;
8
        }
9
10
        private void calibrate(int iSeed)
11
        {
12
            // Do some calibration here
13
        }
14
15
        protected void seedCalibration(int iSeed)
16
        {
17
            calibrate(iSeed);
18
        }
19
20
        public int getSensorData()
21
        {
22
            // Check sensor here
23
24
            return sensorData;
25
        }
26
27
    }

Condicionales

Java incluye declaraciones condicionales, que se pueden utilizar para ejecutar fragmentos de código si, y sólo si, se cumplen ciertas condiciones. Típicamente, una declaración condicional implica dos lados. Si los dos lados son equivalentes, la afirmación es verdadera, de lo contrario es falsa.

Java tiene todos los operadores condicionales típicos, tales como:

  • == igual a, como en (a == b)
  • != No igual a, como en (x != Y)
  • > mayor que, como en (z > y)
  • >= Mayor o igual que, como en (q >= z)
  • < Menor que, como en (b < a)
  • <= Menor o igual que, como en (a <= z)

Y cuando necesite combinar múltiples sentencias condicionales en una sola prueba condicional más grande, puede usar AND (&&) y OR (||):

  • (A == b) && (a == c)) // true sólo si A es igual a B e igual a C
  • (A == b) || (a == c)) // true sólo si A es igual a B o igual a C

Java tiene operadores bit a bit (&, |, ^), desplazamientos (>>, <<), y complemento (~) operadores, así, si los necesita. Consulte la documentación de Java para obtener más detalles.

Ahora que sabe cómo elaborar una declaración condicional, puede crear segmentos de código condicional. La forma más simple de una instrucción de código condicional es la instrucción if():

1
boolean condition = true;
2
if(condition==true)
3
{
4
    // Execute this code only if  condition variable is true
5
}

Si desea proporcionar código alternativo para ejecutar si no se cumple la condición, utilice la cláusula else con la instrucción if():

1
boolean condition = true;
2
if(condition==true)
3
{
4
    // Execute this code only if condition variable value is true
5
} else {
6
    // Execute this code only if condition variable value is false
7
}

Si desea manejar más de dos casos, puede usar las sentencias if-else-if-else en cascada, como esto:

1
if(iVar==0) {
2
    // variable is zero
3
} else if (iVar > 0) {
4
    // variable is a positive number
5
} else {
6
    // variable is a negative number
7
}

Cambiar las declaraciones de caso

Cuando tiene un número de diferentes rutas de código posibles que se derivan de un único valor de variable, puede utilizar una instrucción switch(). Con una instrucción switch, se proporciona la variable para comprobar y proporcionar numerosas opciones para ejecutar para casos específicos. También puede proporcionar una opción predeterminada para ejecutar si no se aplican otros casos. Cada caso se puede terminar con una instrucción break. Si no se proporciona una instrucción break, el código continuará ejecutándose en la siguiente instrucción case.

1
        char singleChar = 'z';
2
        switch(singleChar) {
3
        case 'a':
4
        case 'e':
5
        case 'i':
6
        case 'o':
7
        case 'u':
8
            // singleChar is a vowel! Execute this code!
9
            break;
10
        default:
11
             // singleChar is a consonant! Execute this code instead!
12
             break;
13
        }

Bucles

Cuando se quiere ejecutar el código repetidamente, o utilizando la recursión (heh, mira que uno si no sabes de lo que estamos hablando), Java tiene soporte para varios tipos diferentes de bucles.

Para realizar bucle continuamente siempre que una instrucción sea cierta, utilice un while() loop:

1
int numItemsToProcess = 3;
2
while(numItemsToProcess > 0)
3
{
4
    // process an item
5
    numItemsToProcess--;
6
}

Si desea evaluar la expresión de bucle condicional DESPUÉS de la primera iteración, puede utilizar un bucle do-while en su lugar:

1
do
2
{
3
    // check for items to process, update numItemsToProcess as required
4
    // process item, updated numItemsToProcess
5
} while (numItemsToProcess > 0);

Por último, si desea realizar bucle para un número específico de iteraciones, puede utilizar un bucle for(). Un bucle for() tiene tres parámetros: el valor inicial, el valor de finalización y el valor de incremento. Por ejemplo, para ejecutar un bucle 100 veces, imprimiendo los números del 1 al 100, podría utilizar lo siguiente para el bucle for():

1
for(int i = 1; i <=100; i++)
2
{
3
    // print i
4
}

Nota: También puede utilizar una instrucción break para salir de un while(), do-while() o for() loop cuando sea necesario. También puede utilizar una instrucción continue para omitir el resto de una iteración actual de un bucle y pasar a la siguiente iteración (reevaluando la expresión condicional, por supuesto).

Pasando por valor vs. por referencia

No hay punteros en Java. Ok, ok, adelante y suspira de alivio. La vida es bastante difícil sin los punteros mucking cosas para arriba, ¿no?

Ok, ahora es el momento de prestar atención de nuevo. En Java, los parámetros del método se pasan por valor. Sin embargo, cuando un parámetro de método es un objeto (es decir, cualquier cosa excepto un tipo primitivo), sólo una referencia a ese objeto se pasa al método [como los punteros, lo siento!]. Por lo tanto, con el fin de modificar el objeto pasado en un método dado, que generalmente pasan en la referencia de objeto, y luego actuar sobre él, que modifica los datos subyacentes del objeto que pasó pulg Usted no puede, sin embargo, intercambiar el propio objeto... Aquí está un ejemplo rápido:

Aquí, tenemos una clase llamada Cat:

1
public class Cat {
2
    private String mCatName;
3
4
    Cat(String name) {
5
        mCatName=name;
6
    }
7
8
    public String getName() {
9
        return mCatName;
10
    };
11
12
    public void setName(String strName) {
13
        mCatName = strName;
14
    };
15
}

Ahora, intentemos usar esta clase y pasar un objeto Cat a algunas funciones y ver lo que sucede:

1
    void messWithCat(Cat kitty) {
2
        kitty = new Cat("Han");
3
    }
4
5
    void changeKitty(Cat kitty) {
6
        kitty.setName("Wookie");
7
    }
8
9
    Cat haveKitten()
10
    {
11
        Cat kitten = new Cat("Luke");
12
        return kitten;
13
    }

Por último, vamos a llamar a estos métodos y ver cómo actúan sobre instancias de objetos Cat:

1
Cat cat1 = new Cat("Jabba");
2
Cat cat2 = new Cat("Leia");
3
4
cat1.getName();    // Returns Jabba
5
cat2.getName();    // Returns Leia
6
messWithCat(cat1);
7
changeKitty(cat2);
8
Cat cat3 = haveKitten();
9
cat1.getName();    // Returns Jabba – Note that object remains unchanged!
10
cat2.getName();    // Returns Wookie
11
cat3.getName();    // Returns Luke

Terminando

Acaba de completar un curso intensivo del lenguaje de programación Java. Aunque es posible que no estés preparado para escribir tu primera aplicación Java, deberías poder trabajar con la más simple de las clases de Java de aplicaciones de muestra de Android y determinar lo que están haciendo, al menos en términos de la sintaxis Java de las cosas. La primera clase que usted va a querer mirar para el desarrollo de Android es la clase de actividad. Una aplicación de Android utiliza actividades para definir diferentes tareas de ejecución y, por lo tanto, debe definir una actividad para actuar como punto de entrada a su aplicación. Ahora que usted tiene un identificador en la sintaxis de Java, le recomendamos que trabaje a través de un tutorial para principiantes de Android.

Sólo has arañado la superficie del desarrollo de Java para el desarrollo de Android. Echa un vistazo a todos los otros grandes tutoriales de Mobiletuts+ para profundizar en el desarrollo de Java y Android. Recomendamos encarecidamente los siguientes tutoriales iniciales para Android: Introducción al desarrollo de Android por Gyuri Grell y Android Principiante: Introducción a Fortune Crunch para comenzar a dabbling en el desarrollo de Android. ¡Buena suerte!

Sobre los autores

Los desarrolladores de móviles Lauren Darcey y Shane Conder han coautorizado varios libros sobre desarrollo de Android: un libro de programación en profundidad titulado Android Wireless Application Development y Sams TeachYourself Desarrollo de aplicaciones para Android en 24 horas. Cuando no escriben, pasan su tiempo desarrollando software móvil en su empresa y brindando servicios de consultoría. Se puede contactar a través de correo electrónico a androidwirelessdev+mt@gmail.com, a través de su blog en androidbook.blogspot.com, y en Twitter @androidwireless.

¿Necesitas más ayuda para crear aplicaciones para Android? ¡Echa un vistazo a nuestros últimos libros y recursos!

Buy Android Wireless Application Development, 2nd Edition Buy Sam's Teach Yourself Android Application Development in 24 Hours Mamlambo code at Code Canyon


Tutoriales relacionados: