La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Curso de java básico (scjp)

Presentaciones similares


Presentación del tema: "Curso de java básico (scjp)"— Transcripción de la presentación:

1 Curso de java básico (scjp)

2 Identificadores, palabras claves y tipos

3 Objetivos GENERALES 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

4 Punto y coma, bloques, espacios en blanco
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; } En programación se utilizan los operadores aritméticos: +,=,-,/,x. El operador =, se utiliza para asignación de variables. Ejemplo: Total= a+b; Los operadores +,-,/ y * son operadores matemáticos. El operador +, además de ser utilizado para operaciones de suma entre números, se utiliza para concatenar palabras. String palabra; palabra= “hola” + “,” + “cómo estas?”; Como vemos, la variable palabra es asignada a la concatenación de varias palabras, mediante el operador =. En este caso, el operador +, no actúa como operador matemático, sino que realiza la unión de las palabras “hola”, “,”, + “cómo estas?”, según el orden en que aparecen.

5 Punto y coma, bloques, espacios en blanco
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. Al definir una clase, los espacios en blanco son permitidos y no hay limites para su uso. Pero si se deben respetar los bloques que definen una clase, los cuales estan dados por las llaves: { }. Recordar, que se pueden definir varias clases en un mismo archivo fuente, siempre y cuando se definan correctamente, es decir, se utilicen los bloques correspondientes.

6 Identificadores 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 Para el caso de los atributos, variables o métodos, los identificadores deben ser únicos dentro de la clase, pudiendo repetirse fuera de esta. Ejemplo: Public class Persona { private String nombre; public String obtenerNombre() return nombre; } Public class Empresa Recordar que al definir la firma de un método, el retorno especificado en la firma debe coincidir con el tipo de datos devuelto. En este caso, el tipo de retorno del método obtenerNombre() es String, y el elemento retornado es el nombre; una variable de tipo String.

7 Identificadores 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: Para definir variables, se suelen alternar mayúsculas y minúsculas, de la siguiente manera: - int numeroEmpleado; También se han definido convenciones, disponibles en la pagina de Java.

8 Palabras Clave Las 49 palabras reservadas:
No pueden ser utilizadas como nombres de clases, métodos o variables. Como se menciono anteriormente, dentro del lenguaje de programación de Java, existen palabras que son reservadas, es decir que solo pueden ser utilizadas en ciertas ocasiones y de una manera determinada.

9 Tipos Primitivos 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 Java es un lenguaje con control fuerte de Tipos (Strongly Typed). Esto significa que cada variable y cada expresión tiene un Tipo que es conocido en el momento de la compilación. El Tipo limita los valores que una variable puede contener, limita las operaciones soportadas sobre esos valores y determina el significado de las operaciones. El control fuerte de tipos ayuda a detectar errores en tiempo de compilación.  Los tipos primitivos son los que permiten manipular valores numéricos (con distintos grados de precisión), caracteres y valores booleanos (verdadero / falso). Los Tipos Primitivos son: boolean : Puede contener los valores true o false. byte : Enteros. Tamaño 8-bits. Valores entre -128 y 127. short : Enteros. Tamaño 16-bits. Entre y int : Enteros. Tamaño 32-bits. Entre y long : Enteros. Tamaño 64-bits. Entre y float : Números en coma flotante. Tamaño 32-bits. double : Números en coma flotante. Tamaño 64-bits. char : Caracteres. Tamaño 16-bits. Unicode. Desde '\u0000' a '\uffff' inclusive. Esto es desde 0 a 65535

10 Rango De Valores De Tipos Primitivos
Los 6 tipos numéricos son con signo, positivos o negativos Se representan en notación complemento a dos

11 Rango De Valores Numéricos
Rangos para los tipos de datos numéricos Según la cantidad de dígitos o el tipo de número que queramos utilizar, ya sea un número con coma, un número entero de 8 bits, etc., debemos manejar los distintos tipos disponibles.

12 Rango De Valores De Tipos Primitivos
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) Un ejemplo de un tipo booleano seria el siguiente: hoyEsMartes= true; hoyEsMartes= false; Las palabras: True, False forman parte de las palabras reservadas del lenguaje. Un ejemplo de tipo char: ‘a’

13 SCJP Tips 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) El literal null, es una palabra reservada que indica un conjunto vacio. Ejemplo: private Persona p = null; En este ejemplo, vemos que el objeto Persona p, es nulo, por lo que no tiene asignado un espacio de memoria. Si quisieramos acceder a alguno de los métodos de acceso, como ser getters/setters, obtendríamos un error. Ejemplo: p.getNombre(); p.setNombre(“Pepe”);

14 Valores Literales Para Tipos Primitivos
Un literal primitivo es un valor que se escribe en el código. Ejemplo: ‘b’ // literal char 42 // literal int false // literal boolean // literal double

15 Literales Integrales Hay 3 formas de representarlos Decimal Octal
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 Para definir literales integrales, disponemos de 3 representaciones: - decimal - octal - hexadecimal Para cada representación, se deberá utilizar el sistema de numeración correspondiente, tal y como se muestra en el ejemplo.

16 SCJP Tips 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 = L; long z = 0xFFFFl; Como sabemos, Java es un lenguaje case-sensitive, es decir que es sensible a las mayúsculas. Sin embargo, a la hora de definir dígitos hexadecimales, esto no es controlado., pudiendo utilizar letras mayúsculas o minúsculas indistintamente.

17 SCJP Tips 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 = D; double d2 = e4d;

18 Literales en Punto Flotante
Se definen como un número, una coma decimal (.) y más números representando la fracción. double d = ; Opcionalmente E o e (para valores exponenciales) y un número double d = E-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 = // error de compilación float f = F; // Ok A la hora de definir números con coma, se debe tener en cuenta que la coma es remplazada por el punto. De esta manera lo que seria 0,5, debería escribirse 0.5. Para el caso de escribir números exponenciales se deberá utilizar el literal E, de la siguiente manera: double a = 12.5E10

19 Literales Booleanos 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!

20 Literales Tipo Char 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 los chars, se escriben entre comillas simples 'a' , mientras que las palabras entre comillas dobles: “hola”. Tener presente que escribir “a”, no es lo mismo que escribir 'a‘, ya que son tipos diferentes.

21 SCJP Tips 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) // requiere casteo; 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)

22 Valores Literales Para String
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.

23 Cuándo es apropiado cada tipo?
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) Si vamos a trabajar con números, no solo debemos tener en cuenta la cantidad de dígitos que vamos a utilizar sino que también el tipo de numero: tipo entero, racional, etc.

24 Variables, Declaraciones y Asignaciones
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 = ; // declara y asigna un boolean boolean truth = true; // declare una variable character char c; En este ejemplo, se define una clase llamada Assign, la cual posee un método main. En esta se declaran varias variables de distintos tipos, siendo algunas de ellas inicializadas. Al escribir //, estamos escribiendo comentarios en el codigo; sentencias que no son ejecutadas por el compilador, sino que forman parte de la documentación de la aplicación.

25 Variables, Declaraciones y Asignaciones
// 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; }

26 Tipos Referencia en Java
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 ? En java existen dos tipos: Tipos primitivos Tipos referencia Dentro de los tipos primitivos, encontramos: boolean : Puede contener los valores true o false. byte : Enteros. Tamaño 8-bits. Valores entre -128 y 127. short : Enteros. Tamaño 16-bits. Entre y int : Enteros. Tamaño 32-bits. Entre y long : Enteros. Tamaño 64-bits. Entre y float : Números en coma flotante. Tamaño 32-bits. double : Números en coma flotante. Tamaño 64-bits. char : Caracteres. Tamaño 16-bits. Unicode. Desde '\u0000' a '\uffff' inclusive. Esto es desde 0 a 65535 Por otro lado, los tipos Referencia, son aquellos tipos que no son tipos primitivos: Persona String Etc…

27 Tipos Referencia en Java
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() { ... } } En este ejemplo, vemos la clase MyDate, un tipo referencia que posee tipos primitivos.

28 Tipos Referencia en Java
public class TestMyDate { public static void main(String[] args) { MyDate today = new MyDate(22, 7, 1964); } En la clase TestMyDate, en el método de arranque de la aplicación (método main()), se define una nueva instancia de la clase MyDate, llamada today. Este objeto, es creado a traves de su constructor, el cual recibe tres parametros: el dia, el mes y el año.

29 Construyendo e Inicializando Objetos
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); Recordando el ejemplo de las tazas, para definir una nueva instancia de una taza, se utiliza la palabra reservada new de la siguiente manera: Taza miTaza= new Taza(); En este caso, vemos que el constructor utilizado, no requiere ningún parámetro. Al crear una nueva instancia de la clase Taza, identificada por el nombre miTaza, Java le asigna un nuevo espacio de memoria.

30 Asignación de Memoria 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); Al realizar el new de un nuevo objeto, Java reserva memoria para dicho objeto, y sus atributos. Luego de invocar el constructor, cada espacio de memoria de cada variable es asignado con los valores correspondientes del objeto: dia=22, month=7, year=1964.

31 Inicialización implícita de atributos
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 En una primera instancia, se crea el objeto con los valores por defecto, para luego asignar los valores definidos en el constructor.

32 Ejecutando el Constructor
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

33 Asignación Asignación del objeto nuevo a la variable referencia:
MyDate my_birth = new MyDate(22, 7, 1964); Como vemos en la imagen, un nuevo espacio de memoria fue asignado al objeto my_birth, el cual esta dado por: 0x01abcdef. Es el Garbagge Collector, quien se encarga de liberar dichos espacios de memoria, cuando el objeto my_birth ya no es utilizado.

34 Asignando referencias
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 este caso, vemos que se crea un objeto s, de tipo MyDate. A este objeto se le asigna una dirección de memoria: 0x Luego, se define una variable, llamada t, y se le asigna s. Ahora bien, a la variable t, se le asigna la misma dirección de memoria, y por ende, ambos apuntan a los mismos datos/atributos del objeto my_birth. Como vemos, ambas variables referencian al mismo objeto. Sin embargo, si se hace el new de la variable t, es decir, si escribimos: t= new MyDate(22,12,1964), Java asigna un nuevo espacio de memoria: 0x , el cual nada tiene que ver con el espacio de memoria asignado al objet s.

35 Pasaje Por Valor 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

36 Ejemplo: Pasaje Por Valor
public class PassTest { // Methods to change the current values public 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; Dado el siguiente ejemplo, se quiere estudiar el pasaje por valor y por referencia. Para ello, se deberá crear una clase llamada PassTest y otra MyDate, la cual fue definida anteriormente, y evaular las salidas luego de querer cambiar los valores del objeto MyDate.

37 Ejemplo: Pasaje Por Valor
// 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); changeObjectRef(date); date.print(); // Now change the day attribute // through the object reference changeObjectAttr(date); }

38 La referencia this 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 Veamos un ejemplo: public class Persona { private String nombre; public void setNombre(String nombre) nombre= nombre; } Situación: Analizando el método setNombre, como hacemos para distinguir la variable nombre definida como atributo de clase y la variable que pasa en el método? Solución: referencia this Para solucionar esto, se dispone de la referencia this. This, es una de las palabras reservadas, utilizadas para hacer referencia a las variables definidas dentro de la clase. this.nombre= nombre; En este caso this.nombre, corresponde al atributo de clase, mientras que nombre corresponde a la variable recibida en el método.

39 Ejemplo: this 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; En este caso, las variables que se encuentran a la derecha del signo de igual, y poseen la palabra this, hacen referencia a los atributos de la clase definidos mas arriba.

40 Ejemplo: this 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();

41 Convenciones de Código en Java
Paquetes: package banking.domain; Clases: class SavingsAccount Interfases: interface Account Métodos: balanceAccount() Dentro de las convenciones de código Java, encontramos la forma de escribir el nombre de los paquetes, clases, interfaces y métodos: - Los paquetes y sub paquetes, suelen escribirse en minúscula. Los nombres de las clases, deben comenzar con mayúscula. En caso de que sea un nombre compuesto, no se deben utilizar guiones, ni caracteres o símbolos especiales. Análogamente para las interfaces. Finalmente, los nombres de los métodos, deben comenzar en minúscula, alternando con mayúsculas, en caso de concatenar mas palabras: reportesEstadísticosAnuales()

42 Convenciones de Código en Java
Variables: currentCustomer Constantes: HEAD_COUNT MAXIMUM_SIZE ¿Donde encontrarlas? En cuanto a las variables, la notacion es la misma que la de los métodos. En caso de definir constantes, éstas deben definirse en mayúscula.

43 Resúmen 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.

44 Referencias Arraquis Java Sun
Java Sun


Descargar ppt "Curso de java básico (scjp)"

Presentaciones similares


Anuncios Google