Prof. Mayra M. Méndez Anota. Herramientas Características Convenciones Estructura de una clase...

Post on 28-Jan-2016

219 views 0 download

Transcript of Prof. Mayra M. Méndez Anota. Herramientas Características Convenciones Estructura de una clase...

JavaProf. Mayra M. Méndez Anota

Herramientas Características Convenciones Estructura de una clase Sintaxis de: métodos, atributos,

constructores Sentencias de escape Import y package

Hemos visto de Java

Palabras reservadas Tipos de datos Operadores Sentencias de control Arreglos

Veremos

Ejercicio.

public class BasicsDemo {

public static void main(String[] args) { int sum = 0; for (int current = 1; current <= 10; current++) { sum += current; } System.out.println("Sum = " + sum); }}

// SecuenciasEscape.java

// Demostrando el uso de secuencias de escape

public class SecuenciasEscape { public static void main( String args [ ] ) { System.out.println( "Impresión de apóstrofos: " + “ \‘ A \‘ " ); System.out.println( "Impresión de comillas: " + “ \“ string \“ " ); System.out.println( "impresión de una diagonal invertida: \\ " ); System.out.println( "Texto separado \t \t por dos tabulaciones" ); System.out.println( "He aquí texto \n \n a doble espacio " ); System.out.println( "********** \r ##### " ); }}

Ejercicio.

Son palabras que tienen especial significado para el compilador.

Se utilizan para identificar un tipo de dato o constructor del programa.

abstract default if private thisboolean do implements protected throwbreak double import public throwsbyte else int return trycontinue final new static void

Palabras Reservadas

Keyword Description Size/Format

(integers)

byte Byte-length integer 8-bit two's complement

short Short integer 16-bit two's complement

int Integer 32-bit two's complement

long Long integer 64-bit two's complement

(real numbers)

floatSingle-precision floating

point32-bit IEEE 754

doubleDouble-precision floating

point64-bit IEEE 754

(other types)

char A single character 16-bit Unicode character

booleanA boolean value (true or

false)true or false

Literal Data Type

178 int

8864L long

37.266 double

37.266D double

87.363F float

26.77e3 double

' c ' char

true boolean

false boolean

Tipos Primitivos

Java tiene dos categorías de tipos de datos : ◦ primitivos y referencia( un dato que es almacenado en una

dirección)

Primitivos :Una variable de tipo primitivo contiene un solo valor de un tamaño y formato apropiado. Sintaxis :

Una referencia es llamada un puntero ó dirección de memoria en otros lenguajes.

◦ Un ejemplo de variables de este tipo son los arreglos, clases, interfaces.

Variables

Operadores de incremento y decremento

Operador Llamado Expresión de muestra

++ Preincremento ++a

++ Posincremento a++

-- Predecremento --b

-- Posdecremento b--

Operadores Aritméticos

Operador Uso Descripción

+ op1 + op2 suma op1 y op2

- op1 - op2 resta op2 del op1

* op1 * op2 Multiplica op1 por el op2

/ op1 / op2 Divide op1 entre op2

% op1 % op2 Regresa el restante de dividir el op1 entre op2

Operadores de Asignación

Operador de asignación

Expresión de muestra

Explicación Asigna

+= c+=7 c = c + 7 10 a c

-= d -=4 d = d – 4 1 a d

*= e *=5 e = e * 5 20 a e

/= f/=3 f = f / 3 2 a f

%= g%=9 g = g % 9 3 a g

Supongamos :int c = 3, d = 5, e = 4, f = 6, g = 12 ;

Operadores Relaciónales

Operador Uso Regresa true si

> op1 > op2 op1 es mayor que op2

>= op1 >= op2 op1 es mayor o igual a op2

< op1 < op2 op1 es menor que op2

<= op1 <= op2 op1 es menor o igual que op2

== op1 == op2 op1 y op2 son iguales

!= op1 != op2 op1 y op2 no son iguales

Operadores Relaciónales

Operador Uso Regresa true si

&& op1 && op2 op1 y op2 ambos son true, condicionalmente se evalua el op2

|| op1 || op2 Si op1 o op2 es true, condicionalmente se evalua el op2

! ! op op es false

Estructuras de Control

Estructuras de control

Statement Type Keyword

looping while, do-while , for

decision making if-else, switch-case

exception handling

try-catch-finally, throw

branching Break, continue, label:, return

while (expression) { statement}

Ejemplo :

while (c != 'g') { copyToMe.append(c); c = copyFromMe.charAt(++i); }

While

do { statement(s)} while (expression);

Ejemplo :

do { copyToMe.append(c); c = copyFromMe.charAt(++i); } while (c != 'g');

Do-While

for (initialization; termination; increment) { statement}

for ( ; ; ) { // infinite loop...}

Ejemplo :for (int i = 0; i < arrayOfInts.length; i++) { System.out.print(arrayOfInts[i] + " "); }

For

if (expression) { statement(s)}if (response == OK) { // code to perform OK

action} else { // code to perform Cancel

action}

IF/ELSE

if (testscore >= 90) { grade = 'A'; } else if (testscore >= 80) { grade = 'B'; } else if (testscore >= 70) { grade = 'C'; } else if (testscore >= 60) { grade = 'D'; } else { grade = 'F'; }

public class SwitchDemo { public static void main(String[] args) {

int month = 8; switch (month) { case 1: System.out.println("January"); break; case 2: System.out.println("February"); break; case 3: System.out.println("March"); break; case 4: System.out.println("April"); break; case 5: System.out.println("May"); break; case 6: System.out.println("June"); break; case 7: System.out.println("July"); break; case 8: System.out.println("August"); break; case 9: System.out.println("September"); break; case 10: System.out.println("October"); break; case 11: System.out.println("November"); break; case 12: System.out.println("December"); break; } }}

Switch

• public class SwitchDemo2 {• public static void main(String[] args) {

• int month = 2;• int year = 2000;• int numDays = 0;

• switch (month) {• case 1:• case 3:• case 5:• case 7:• case 8:• case 10:• case 12:• numDays = 31;• break;• case 4:• case 6:• case 9:• case 11:• numDays = 30;• break;• case 2:• if ( ((year % 4 == 0) && !(year % 100 == 0))• || (year % 400 == 0) )• numDays = 29;• else• numDays = 28;• break;• }• System.out.println("Number of Days = " + numDays);• }• }

Switch – Break

switch (month) { case 1: System.out.println("January"); break; case 2: System.out.println("February"); break; case 3: System.out.println("March"); break; case 4: System.out.println("April"); break; case 5: System.out.println("May"); break; case 6: System.out.println("June"); break; case 7: System.out.println("July"); break; case 8: System.out.println("August"); break; case 9: System.out.println("September"); break; case 10: System.out.println("October"); break; case 11: System.out.println("November"); break; case 12: System.out.println("December"); break; default: System.out.println("Hey, that's not a valid month!");

break;}

Switch – Default

public class BreakDemo { public static void main(String[] args) {

int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076, 2000, 8, 622, 127 }; int searchfor = 12;

int i = 0; boolean foundIt = false;

for ( ; i < arrayOfInts.length; i++) { if (arrayOfInts[i] == searchfor) { foundIt = true; break; } }

if (foundIt) { System.out.println("Found " + searchfor + " at index " + i); } else { System.out.println(searchfor + "not in the array"); } }}

Break

public class ContinueDemo { public static void main(String[] args) {

StringBuffer searchMe = new StringBuffer( "peter piper picked a peck of pickled peppers"); int max = searchMe.length(); int numPs = 0;

for (int i = 0; i < max; i++) { //interested only in p's if (searchMe.charAt(i) != 'p') continue;

//process p's numPs++; searchMe.setCharAt(i, 'P'); } System.out.println("Found " + numPs + " p's in the string."); System.out.println(searchMe); }}

Continue

Es un grupo de posiciones de memoria contiguas, todas las cuales tienen el mismo nombre y el mismo tipo.

Un arreglo es un objeto.

Los arreglos pueden ser de cualquier tipo primitivo o una clase.

Arreglos

Arreglos

char [ ]; point [ ];

Se utiliza la palabra new para crear un objeto arreglo.

int c [ ] = new int [ 12 ];

int c [ ] ; // declara el arreglo.c = new int [ 12 ]; // asigna memoria al arreglo.

Declaración y almacenamiento de arreglos

Se inicializan con cero para variables de tipos primitivos númericos.

Se inicializan con false para variables boolean.

Se inicializan con null para el caso de referencias.

Declaración y almacenamiento de arreglos

string names [ ];names = new string

[ 3 ];names [ 0 ] =

“Georgina”;names [ 1 ] =

“Simon”;names [ 2 ] =

“Melvin”;

Inicializando arreglos

string names [ ] = {

“Georgina”,”Simon”,”Melvin”

};

public class ArrayDemo { public static void main(String[ ] args) { final int tamaño; int[ ] anArray; // declare an array of integers

anArray = new int[ tamaño ]; // create an array of integers

// assign a value to each array element and print for (int i = 0; i < anArray.length; i++) { anArray[i] = i; System.out.print(anArray[ i ] + " "); } System.out.println(); }}

Ejercicio.

Java no permite crear arreglos multidimensionales.

Java permite crear arreglos de un solo índice cuyos elementos también son elementos de un solo subíndice.

Arreglo de arreglos

int b [ ] [ ] = { {1,2 }, { 3,4} }

Equivale:

b [ 0 ] [ 0 ] = 1b [ 0 ] [ 1 ] = 2b [ 1 ] [ 0 ] = 3b [ 1 ] [ 1 ] = 4

int matriz [ ] [ ] = new int [ 4 ] [ ] ;

int matriz [ ] [ ] = new int [ ] [ 4 ] ; // Error, operación ilegal.

Declaración e inicialización

public class ArrayOfArraysDemo { public static void main(String[ ] args) { String[ ][ ] cartoons = {

{ "Flintstones", "Fred", "Wilma", "Pebbles", "Dino" }, { "Rubbles", "Barney", "Betty", "Bam Bam" }, { "Jetsons", "George", "Jane", "Elroy", "Judy", "Rosie", "Astro" }, { "Scooby Doo Gang", "Scooby Doo", "Shaggy", "Velma", "Fred",

"Daphne" } };

for (int i = 0; i < cartoons.length; i++) { System.out.print(cartoons[ i ][ 0 ] + ": ");

for (int j = 1; j < cartoons[ i ].length; j++) { System.out.print(cartoons[ i ][ j ] + " "); } System.out.println( );

} }}

Ejercicio.

Se utiliza el método :

System.arraycopy (Object source, int srcIndex, Object dest, int destIndex,int length)

public class ArrayCopyDemo { public static void main(String[ ] args) { char[ ] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e',

'i', 'n', 'a', 't', 'e', 'd' }; char[ ] copyTo = new char[ 7 ];

System.arraycopy(copyFrom, 2, copyTo, 0, 7); System.out.println(new String(copyTo)); }}

Copiando un Arreglo

Cuando en un programa se emplean valores literales o se crean variables y constantes para asignarles un valor, estos son almacenados en la memoria de la computadora.

Almacenamiento de variables, referencias y objetos en memoria

Objetos con sus atributos

Variables y constantes declaradas dentro de

un método

Memoria Stack

Memoria Heap

Los objetos con sus atributos son almacenados en la memoria Heap, la cual es administrada de manera dinámica por el programa. Por otra parte, las referencias a los objetos y las variables de sus métodos son almacenadas en la memoria Stack, dado que sólo son empleadas por un breve periodo de tiempo. Mientras que las variables de tipo primitivo almacenan valores, las referencias a objetos almacenan la ubicación en memoria (dirección) de los mismos.

public static void main(String args[]){int counter = 10;Shirt myShirt = new Shirt();

}

Ejemplo

Memoria Stack Memoria Heap

counter

myShirt

10

0x034009

shirtID

price

colorCode

0x034009

0

0.0

U

Clase String

Clase StringBuffer

Clase Character

Manejo de Cadena Y Caracteres

Presenta varios métodos que devuelven copias modificadas de los objetos String o que devuelven un arreglo de caracteres.

Clase String

Ofrece capacidades para procesar objetos String.

Tiene como características especiales el crear y manipular información de cadena dinámica, es decir objetos String modificables.

Clase StringBuffer

Proporciona métodos que reciben por lo menos un argumento carácter y realizan una prueba y manipulación del carácter.

Clase Character