0% encontró este documento útil (0 votos)
17 vistas

Java - Parte 2

Cargado por

street gramer
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
17 vistas

Java - Parte 2

Cargado por

street gramer
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 53

Programación Orientada a Objetos I

Claudio Omar Biale


Facultad de Ciencias Exactas Químicas y Naturales
Universidad Nacional de Misiones
Ver Versión
Obtener versión del runtime (máquina virtual):

$ java -version

Obtener versión del compilador:

$ javac -version

Tienen la versión 14? Algún error?


De Existir Problemas
Escribir en el foro (Problemas de instalación).

Mirar video de instalación en Linux .


Porqué Byte Code
Generamos el archivo .class:

$ javac Bienvenida.java

Lo ejecutamos:

$ java Bienvenida

Portabilidad: Podemos ejecutar el archivo .class en distintas


plataformas (Windows, Linux, Mac, etc.).
Hola
1 public class Hola {
2 public static void main(String[] args) {
3 System.out.println("Hola");
4 }
5 }

Especifiquen el nombre del archivo fuente.


Hola.java
Hola
1 public class Hola {
2 public static void main(String[] args) {
3 System.out.println("Hola");
4 }
5 }

public es un modificador de acceso.

static especifica que es un método de clase y no de instancia


(luego veremos las diferencias).
void es lo que esta devolviendo el método main (nada).
Tener en Cuenta
Las clases , métodos y atributos pueden tener modificadores de
acceso.

Siempre es bueno identar bloques de código.


Imprimir en Pantalla
Imprimir texto con salto de línea:

System.out.println("Texto");

Imprimir texto sin salto de línea:

System.out.print("Texto");
Concatenar Strings
Si un String es concatenado con algo que no es un String, la otra
variable es convertida en String.

System.out.print("Valor " + 78);

OJO!! El + en este contexto es concatenar


Secuencias de Escape
Similares a las existentes en C.

En Java, es posible imprimir ' sin usar una secuencia de escape.


Qué muestra lo siguiente?

System.out.println("Para imprimir la \\, se debe usar \"\\\\\"");

Salida: Para imprimir la \, se debe usar "\\"


Palabras Claves
Distingue mayúsculas y minúsculas (case sensitive).

No se puede usar para nombres de variables, atributos o clases.


Un listado no actualizado:
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keyw
ords.html
Tipos de Datos
Java es un lenguaje fuertemente tipado.
Cuando se declara una variable se debe especificar su tipo, el
cual no cambia en el tiempo.

Todos los tipos de datos en Java son un objeto, excepto los tipos
de datos primitivos.
Tipos de Datos Primitivos
Tipo Detalle
int 4 bytes (-2,147,483,648 -> 2,147,483,647)
short 2 bytes (-32,768 -> 32,767)
long 8 bytes (enteros grandes)
byte 1 byte (-128 -> 127)
float 4 bytes (punto flotante)
double 8 bytes (punto flotante)
char 2 bytes (representación Unicode), Usan ' '
boolean false o true
Variables
Deben declararse antes de usarse.

Sintaxis:

tipoDeDatos nombreVariable [= valor];

Alternativa desde Java 10:

var nombreVariable = valor;

OJO!!! Hablamos de variables, no de atributos.


Variables
Ejemplos:

int x;
double pi = 3.1416;
char salir = 's';
boolean esValido = true;

Un char se especifica con comilla Simple.


Las variables con nombre compuesto (por ejemplo: esValido) se
escriben con formato camelCase.
Float en Java
Los literales de punto flotante son considerados doubles.

float f = 3.14;

Esto no compila!!
Para solucionarlo, agregar f al valor especificado o declararlo
como double.
Mirar ejemplo del aula: Float.java.
Otras Consideraciones
El resultado de una división de enteros es un entero.

4 / 3 = ???
1
Para que devuelva un valor en punto flotante hay que castear.
4 / (double) 3
Formato a la Salida
System.out es un objeto PrintStream;
Ejemplo de uso de Formato:

double pi = 3.14159, e = 2.71828;


double total = pi * e;

// Formato simple
System.out.printf("%6.5f y %5.2f ", pi, e);

Mirar ejemplo del aula: Formato.java.


Constantes
Valores de solo lectura, no se le puede asignar nuevos valores.
Identificador que representa un valor permanente.

La palabra clave final precede al tipo de datos.


Ejemplo dentro de un método:

final double PI = 3.1416;

Por qué podríamos querer usar constantes dentro de un método?


Constantes de Clase
Constantes para todos los métodos en la clase o para ser usada en
otras clases
Mucho mas común que constantes de instancia.

Requiere se use la palabra clave static


static significa de la clase o para su uso en la clase.
También se usa para métodos (lo veremos más adelante).

static final double CM_POR_PULGADA = 2.540;


Operadores Aritméticos
Operador Descripción
= Asignación
+ Suma
- Resta
* Multiplicación
/ División
% Módulo
Operadores Aritméticos
Operador Descripción
+= Suma y asignación
-= Resta y asignación
*= Multiplicación y asignación
/= División y asignación
%= Modulo y asignación
++ Operador de incremento
-- Operador de decremento
Operadores Comparación
Operador Descripción
== Igualdad
> Mayor que
>= Mayor o igual que
<= Menor o igual que
< Menor que
!= Distinto

Devuelven un valor boolean


Operadores Lógicos
Operador Descripción
&& Y
|| O
! No
^ O exclusivo
& Y (bits)
| O (bits)

Devuelven un valor boolean


Librerías o Bibliotecas en Java
Organizadas en una
jerarquía de paquetes.

Las clases definidas en


java.lang.* se incluyen por
defecto en todo programa
Java.
Las otras deben importarse
de forma explicita.
Leer Valores desde el Teclado
Para ingresar datos por la entrada estándar se puede usar la clase
Scanner.

Considerar que Java usa:


System.out para referirse a la salida estándar.
System.in es usado para referirse a la entrada estándar.
System.err es usado para referirse a la salida de error.
Lectura de valores (Algunos Tipos)
Método Lee valor de tipo
nextByte() byte
nextShort() short
nextInt() int
nextLong() long
nextFloat() float
nextDouble() double
next() String
nextLine() String hasta final de línea
1 import java.util.Scanner;
2
3 public class CalculoAreaIngresada {
4 public static void main(String[] args) {
5 Scanner entrada = new Scanner(System.in);
6 System.out.print("Ingrese el valor de radio: ");
7 double radio = entrada.nextDouble();
8 double area = radio * radio * 3.14159;
9 System.out.println("El área para el círculo con radio " + radio + " es " + area);
10 }
11 }

En la línea 1 se importa la clase Scanner, que se encuentra en el


paquete java.util.
En la línea 5 se crea un objeto de tipo Scanner, dicho objeto se
almacena en una variable denominada entrada.
1 import java.util.Scanner;
2
3 public class CalculoAreaIngresada {
4 public static void main(String[] args) {
5 Scanner entrada = new Scanner(System.in);
6 System.out.print("Ingrese el valor de radio: ");
7 double radio = entrada.nextDouble();
8 double area = radio * radio * 3.14159;
9 System.out.println("El área para el círculo con radio " + radio + " es " + area);
10 }
11 }

En la línea 7 se solicita el ingreso de un valor desde el teclado y se


almacena el valor en la variable radio .

Mirar ejemplo del aula: CalculoAreaIngresada.java.


Importación
Hay dos formas de instrucciones de importación:
Especifica: import java.util.Scanner;
Comodín: import java.util.*;

Diferencias?
Importación
La información de las clases de un paquete importado no es leída
en tiempo de compilación o en tiempo de ejecución salvo que la
clase sea usada en el programa.

No hay diferencia de rendimiento en las formas de importación.


java.lang.Math
Incluido por defecto en cada programa Java
Causa?

Contiene funciones (métodos) y constantes (campos) matemáticas


útiles.
1 public class EjemploMath {
2 public static void main(String[] args) {
3 double y = Math.pow(2, 4);
4 double z = Math.sin(y);
5 double d = Math.exp(4.59) * Math.PI;
6 System.out.println("Valor de y : " + y);
7 System.out.println("Valor de z : " + z);
8 System.out.println("Valor de d : " + d);
9 }
10 }

pow() , sin() y exp() son métodos definidos en la clase Math .


PI es una constante definida en la clase Math .
Mirar ejemplo del aula: EjemploMath.java.
1 public class EjemploMath {
2 public static void main(String[] args) {
3 double y = Math.pow(2, 4);
4 double z = Math.sin(y);
5 double d = Math.exp(4.59) * Math.PI;
6 System.out.println("Valor de y : " + y);
7 System.out.println("Valor de z : " + z);
8 System.out.println("Valor de d : " + d);
9 }
10 }

Se usa NombreClase.nombreMétodo() para llamar a los métodos


dado que son estáticos.
Significado??
java.lang.String
Permite crear objetos de tipo String.

Recordar:
Los Strings se representan con doble comillas "" .
Los chars se representan con comillas simples '' .
Ejemplos:

String stringVacio = "";


String saludoFeliz = "Hola a todos";
String saludoMalo = "Qué desea?";
java.lang.String
Un char en cada posición del String.

Ejemplo:

String miVariable = "Los Beatles";


Formato de un String
Ejemplo:

String miVariable = "Los Beatles";

0 1 2 3 4 5 6 7 8 9 10
'L' 'o' 's' ' ' 'B' 'e' 'a' 't' 'l' 'e' 's'

El índice comienza en 0 y va hasta diez, el largo es once.


El largo se obtiene invocando a miVariable.length() .
La posición final se obtiene mediante miVariable.length() - 1 .
Acceder a Posiciones de un String
Para obtener un caracter de una determinada posición del String,
se usa el método: charAt() .

Qué sucede en este ejemplo:

String pruebaString = "Viendo Strings";


char caracter1;
char caracter2 = pruebaString.charAt(3);
caracter1 = pruebaString.charAt(2);
Subcadenas o Substrings
Existen métodos que nos permiten obtener una subcadena.
substring(int beginIndex)
: Devuelve un nuevo String que es
una subcadena de este String, desde beginIndex hasta el final
de esta cadena.
substring(int beginIndex, int endIndex)
: Devuelve un nuevo
String que es una subcadena de este String, desde beginIndex
hasta endIndex - 1.
Subcadenas o Substrings
Ejemplo:

String lenguaje = "Java!";


String subCadena1 = lenguaje.substring (1);
String subCadena2 = lenguaje.substring (2, 4);

Qué valores tienen subCadena1 y Subcadena2?


"ava!" y "va"
Concatenar Strings
Recordar, se usa el operador +.

String bienvendida = "Hola";


String nombre = "Clark";
String apellido = "Kent";

String mensaje = bienvenida + ", " +


nombre + " " + apellido;

System.out.println(mensaje);

Qué se imprime por pantalla?


Hola, Clark Kent
Concatenar Strings
Recordar, si un String se concatena con algo que no es un String,
esta se convierte automaticamente a un String.

int puntosTotales = 100;


int puntosObtenidos = 87;

float resultado = (float) puntosObtenidos / puntosTotales;

System.out.println("Su resultado es " + resultado);

resultado es convertido a String.


StringBuilder
Un objeto String es de "solo lectura" o inmutable.

Es conveniente usar objetos StringBuilder para manipular una


cadena. En lugar de crear un nuevo String usando:

String cadena = anterior + "más!";

Conviene usar:

StringBuilder cadena = new StringBuilder (anterior);


cadena.append ("más!");
StringBuilder
Muchos métodos de StringBuilder (Mirar la API).

Por ejemplo: toString() para recuperar la cadena resultante.


Código Ineficiente
Evitar crear objetos innecesarios al usar new para crear un objeto
String.

En lugar de:

String s = new String("text");

Usar:

String s = "text";
Causa
Al definir un String con un literal de cadena de caracteres, Java
crea un objeto con ese literal.

Si luego definen otro con igual literal, Java no crea otro objeto,
sino que la variable apunta (referencia) al mismo objeto creado
anteriormente.

String cadena1 = "texto";


// cadena1 es una referencia a un nuevo objeto String con valor "texto"
String cadena2 = "texto";
// cadena2 es una referencia al objeto creado anteriormente
String cadena3 = new String ("texto");
// crea un nuevo objeto String con valor "texto"
Comparar Strings
Para comparar dos String es conviene invocar al método equals()
que tiene el siguiente formato:

boolean equals(Object anObject)

Ejemplo de uso:

String string1 = "Hola";


String string2 = "hola";
boolean test = string1.equals(string2);

El valor de test es False


equalsIgnoreCase
Para comparar dos String sin considerar mayúsculas y minúsculas
se usa equalsIgnoreCase() que tiene el siguiente formato:

boolean equalsIgnoreCase(Object anObject)

Ejemplo de uso:

String string1 = "Hola";


String string2 = "hola";
boolean test = string1.equalsIgnoreCase(string2);

El valor de test es True


Otros Métodos
boolean endsWith(String str) verdadero si la cadena de texto
termina con la cadena str .

boolean startsWith(String str) verdadero si la cadena de texto


comienza con la cadena str .
boolean contains(CharSequence str) verdadero si la cadena de
texto contiene a str .
Otros Métodos
String replace(CharSequence oldString, CharSequence newString)
retorna un String que se obtiene de reemplazar todas las
ocurrencias de oldString por newString .

String toLowerCase() retorna un String que se obtiene de pasar a


minúsculas el String original.
String toUpperCase() retorna un String que se obtiene de pasar a
mayúsculas el String original.
Otros Métodos
int length() largo de la cadena.

String trim() remueve espacios en blanco al comienzo y final de


la cadena.
Los métodos que retornar un String no cambian al llamante!!! Un
objeto String es inmutable.
Gracias

También podría gustarte