utilizar comentarios distinguir entre identificadores válidos e inválidos reconocer las palabras...

Post on 03-Jan-2015

24 Views

Category:

Documents

10 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Utilizar comentarios Distinguir entre identificadores válidos e inválidos Reconocer las palabras claves de la tecnología Java. Definir los valores literales para los tipos de datos numéricos y 

de texto Definir los términos variable primitiva y variable de referencia. Declarar variables de tipo clase. Construir un objeto usando new. Describir la inicialización por defecto. Describir la importancia de una variable de referencia. Enunciar las consecuencias de asignar variables de tipo clase

Una sentencia es una o más líneas de código terminadas con un punto y coma (;)₋ total = a + b + c + d + e + f;

Un bloque es una colección de sentencias entre llaves que abren y cierran :

{x = y + 1;y = x + 1;

}

Debe usar un bloque en la definición de clase:public class MyDate { private int day; private int month; private int year;} Se puede anidar bloques. Cualquier cantidad de espacios en blanco es

permitido en un programa Java.

Son nombres dados a variables, clases o métodos Puede empezar con una letra Unicode,

infraguión( _ ) o signo de pesos ($) Son case-sensitive y no tienen largo máximo Ejemplos:

₋ Identificador₋ NombreUsuario₋ nombre_usuario ₋ _sys_var1 ₋ $cambio

Sin embargo se recomienda utilizar los identificadores en forma camelCase.

Ejemplos de como se usa:₋ String techManager; // OK₋ String TechManager; // tiene que empezar en

minúscula₋ String tech_Manager // no se usa subguiones.

Sun propone convención de nombres:http://java.sun.com/docs/codeconv/

Las 49 palabras reservadas:

No pueden ser utilizadas como nombres de clases, métodos o variables.

El lenguaje de programación Java define ocho tipos primitivos:₋ Numericos – byte, short, int y long₋ Punto flotante – double y float₋ Lógicos – boolean₋ Textual – char

Los 6 tipos numéricos son con signo, positivos o negativos

Se representan en notación complemento a dos

Rangos para los tipos de datos numéricos

El tipo de dato boolean puede tomar solo los valores, true y false.

Por ejemplo, la sentencia:₋ boolean truth = true;₋ declara la variable truth de tipo boolean y le

asigna el valor true. El tipo char contiene un único carácter Unicode

representado con 16 bits (solo valores positivos)

Los literales null, true y false se comportan también como palabras reservadas.

El tipo char es en realidad un integral, puede ser asignado a cualquier tipo numérico suficientemente grande para almacenarlo (216 – 1)

Un literal primitivo es un valor que se escribe en el código.

Ejemplo:₋ ‘b’ // literal char₋ 42 // literal int₋ false // literal boolean₋ 234456.6 // literal double

Hay 3 formas de representarlos₋ Decimal (en base 10)₋ Octal (en base 8)₋ Hexadecimal (en base 16)

Decimal₋ int x = 43;

Octal₋ int y = 011; // decimal 9

Hexadecimal₋ int z = 0xDeadCafe

Uno de los pocos lugares donde Java no es case-sensitive es en los digitos de los números hexadecimales

Por defecto todos los literales integrales (octales, decimales y hexadecimales) son definidos como int.

También pueden ser especificados como long utilizando el sufijo L o l₋ long w = 110599L;₋ long z = 0xFFFFl;

Opcionalmente podría agregarse el sufijo D o d a los literales double, si bien no es necesario ya que es el comportamiento por defecto, lo siguiente es válido:₋ double d = 3434.5657D;₋ double d2 = 234.2311e4d;

Se definen como un número, una coma decimal (.) y más números representando la fracción.₋ double d = 12346.876;

Opcionalmente E o e (para valores exponenciales) y un número₋ double d = 2345.456E-23;

Los números en punto flotante se definen como double por defecto (64 bits).

Si se quiere asignar un literal de esta forma a un float se deberá agregar el sufijo F o f.₋ float f = 23.467890 // error de compilación₋ float f = 49874.02345F; // Ok

Un valor booleano solo puede ser true o false.₋ boolean t = true;₋ boolean f = 0; // error de compilación

Siempre donde se requiera que se evalúe una condición booleana, deberá tomar valores true o false₋ int x = 1;

if (x) { … } // error de compilación!

Utiliza la siguiente notación:'a' La letra a'\t' El tabulador'\u????' Los cuatro ????, es un número

hexadecimal que representa a un carácter específico en Unicode (por ejemplo,’\u03A6’ es la letra Griega phi [Φ])

Recordar que el tipo char es un tipo integral de 16 bits sin signo. Las siguientes asignaciones son legales:₋ char a = 0x892;₋ char b = 982;₋ char c = (char)

70000 // requiere casteo; 70000 se va de

// rango₋ char d = (char) -96

Caracteres de escape válidos:

₋ \’ (single quote)₋ \” (double quote)₋ \\ (backslash)₋ \t (horizontal tab)₋ \b (backspace)₋ \r (carriage return)₋ \f (formfeed)₋ \n (newline)

No es un tipo primitivo, es una clase Se define entre comillas dobles (" ")"The quick brown fox jumps over the lazy dog." Ejemplos:

₋ String greeting = "Good Morning !! \n";₋ String errorMessage = "Record Not Found !";₋ Los veremos más adelante en profundidad.

Escenario Solución

Qué tipo primitivo sería el mejor para representar el número de estrellas del universo?

long

Qué tipo primitivo sería mejor para representar las opciones de un examen múltiple opción, donde una sola respuesta es válida?

char

Qué tipo primitivo sería adecuado para representar las respuestas de un test múltiple opción, con varias respuestas válidas?

char[]

Qué tipo primitivo seria adecuado para representar la cantidad de habitantes de U.S.A en 2003?

int ( o long para la población mundial)

Qué tipo primitivo sería adecuado para representar el monto de dinero (en dólares) para cuando te retires?

float ( o double si eres el CEO de una compañía de software)

public class Assign { public static void main (String args []) { // declara variables de tipo int int x, y; // declara y asigna un punto flotante float z = 3.414f; // declara y asigna un double

double w = 3.1415; // declara y asigna un boolean

boolean truth = true; // declare una variable character

char c;

// declara una variable String String str;// declare and assign String variable String str1 = "bye";// assign value to char variable

c = 'A';// assign value to String variable

str = "Hi out there!";// assign values to int variables x = 6; y = 1000; }}

Son todos los tipos que no son tipos primitivos

Una variable referencia contiene un “puntero” a un objeto.

Thread t = ??? // que literal podría asignarse ?

Ejemplo:

public class MyDate { private int day = 1; private int month = 1; private int year = 2000; public MyDate(int day, int month, int year) {... } public void print() { ... } }

public class TestMyDate { public static void main(String[] args) { MyDate today = new MyDate(22, 7, 1964); } }

Al invocar new Xxx(), para crear el espacio de memoria al objeto nuevo, ocurre lo siguiente:₋ Se asigna memoria:

₋ Espacio para el objeto nuevo es asignado y las variables de instancia son inicializadas al valor por defecto que les corresponda (por ejemplo: 0, false, null)

₋ Se realiza la inicialización explícita de los atributos₋ Un constructor es ejecutado

La referencia al objeto es asignada a la variable Ejemplo

₋ MyDate my_birth = new MyDate(22, 7, 1964);

La declaración sólo reserva memoria para la referencia:₋ MyDate my_birth = new MyDate(22, 7, 1964);

Utilice el operador new para reservar memoria para MyDate₋ MyDate my_birth =

new MyDate(22, 7, 1964);

Inicialización de atributos:₋ MyDate my_birth = new MyDate(22, 7, 1964);

Los valores por defectos son tomados de la declaración de la clase

Ejecutando el constructor correcto:₋ MyDate my_birth = new MyDate(22, 7, 1964);

En el caso de constructores sobrecargados, el primer constructor puede invocar a otro, como veremos más adelante

Asignación del objeto nuevo a la variable referencia:₋ MyDate my_birth = new MyDate(22, 7, 1964);

int x = 7;int y = x;MyDate s = new MyDate(22, 7, 1964);MyDate t = s; Dos variables referencia al mismo objeto

t = new MyDate(22, 12, 1964); El reasignar hace que las variables referencias

apunten a dos objetos

En Java los argumentos sólo se pasan por valor.

Cuando una instancia de un objeto es pasado como argumento a un método, el valor de ese argumento es una referencia al objeto.

El contenido del objeto puede ser cambiado en el método que lo invocó, pero el objeto referencia nunca puede ser cambiado.

Esto es, puede cambiarse a lo que “apunta”, pero no se puede cambiar la referencia, por ejemplo hacer referenciar a otro objeto

public class PassTest {

// Methods to change the current valuespublic static void changeInt(int value) {

value = 55; } public static void changeObjectRef(MyDate ref) { ref = new MyDate(1, 1, 2000); }

public static void changeObjectAttr(MyDate ref) { ref.setDay(4); }

public static void main(String args[]) { MyDate date;

int val;

// Assign the int val = 11;

// Try to change it changeInt(val); // What is the current value? System.out.println("Int value is: " + val);

// Assign the date date = new MyDate(22, 7, 1964); // Try to change it changeObjectRef(date); // What is the current value? date.print();

// Now change the day attribute // through the object reference changeObjectAttr(date); // What is the current value? date.print(); } }

Algunos ejemplos del uso de la palabra reservada this:₋ Resuelve ambigüedades:

₋ Cuando se quiere referenciar un una variable miembro dentro de un bloque, que tiene variables locales o argumentos con el mismo nombre

Para pasar como parámetro al objeto actual a otro método o constructor

public class MyDate { private int day = 1; private int month = 1; private int year = 2000;

public MyDate(int day, int month, int year) { this.day = day; this.month = month; this.year = year; } public MyDate(MyDate date) { this.day = date.day; this.month = date.month; this.year = date.year; }

public MyDate addDays(int more_days) { MyDate new_date = new MyDate(this); new_date.day = new_date.day + more_days; return new_date; } public void print() {

System.out.println("MyDate: " +day+""+month+"-" + year);

} } public class TestMyDate { public static void main(String[] args) { MyDate my_birth = new MyDate(22, 7, 1964); MyDate the_next_week = my_birth.addDays(7);

the_next_week.print(); } }

Paquetes:package banking.domain;

Clases:class SavingsAccount

Interfases:interface Account

Métodos:balanceAccount()

Variables:currentCustomer

Constantes:HEAD_COUNT

MAXIMUM_SIZE

¿Donde encontrarlas?₋ http://java.sun.com/docs/codeconv/

Sintaxis de clases: bloques, atributos, métodos, identificadores.

Palabras reservadas. Tipos: primitivos y referencia. Creación de objetos: constructores. Asignaciones de memoria. Convenciones de código.

Arraquis₋ http://www.arrakis.es/~abelp/ApuntesJava/indice.htm

Java Sun ₋ http://download.oracle.com/javase/1.5.0/docs/guide/language/inde

x.html

top related