Curso: PildorasInformáticas: Java desde cero

  • Nombre del proyecto
    • Puede llevar espacios en blanco pero no se recomienda
    • Si el nombre es compuesto de dos palabras se recomienda poner las 2 en mayúsculas «HolaMundo»
  • Nombres de clases
    • No llevan espacios, ni caracteres especiales
    • Inician en Mayúscula
    • Deben iniciar con una letra y no un número
  • Todo proyecto debe estar dentro de una clase
public class PrimeraClase {
    
    public static void main (String args[]){
        System.out.println("Hola");

    }
}

Archivos .java y .class

  • El programador escribe el código en el .java y cuando se compila se crea el archivo .class que es el bytecode que es multiplataforma

Tipos de datos primitivos

Variables

Constantes

  • Se declarean con final

Operadores

Exception

  • Existen 2 tipos de excepciones
    • Compilación: error al momento de compilar (algo mal en la programación)
    • Ejecución: al estar ejecutando la aplicación

Declaración de variables en una sola linea

  • Se puede declara varias variables en una sola línea

Tipos de clases en JAVA

  • Existen dos tipos de clases en JAVA
    • Propias: creada por el programador
    • Predefinidas: Existentes dentro de java y están disponibles para ser utilizadas

Clase Math:

Nota Ayuda Netbeans

  • Cuando nos sale un intellisense para un método nos indica los parámetros que recibe y el tipo de dato que retorna,
  • En el ejemplo esto da error
  • Existen funciones que pueden tener mas de un método dependiendo de sus parámetros y tipo de la variable donde se almacenará
  • Otra posible solución

Cast / Refundición / Conversión

Manipulación de cadenas String

  • En String no es un tipo de dato sino que es una referencia a la clase String
  • String: S mayuscula
  • equals:
    • comparar cadenas
    • Toma en cuenta mayúsculas y minúsculas
  • equalsOgnoreCase
    • Compara cadenas sin tomar en cuenta mayúsculas y minúsculas

  • String comillas dobles
package pildoras;

public class ManioulaCadenas {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		String nombre="Gustavo";
		System.out.println("Mi nombre es " + nombre);
		
		// lenght
		System.out.println("Mi nombre tiene " + nombre.length() + " caracteres");
		
		//CharAt
		System.out.println("La primera letra de mi nombre es: " + nombre.charAt(0));
		
		// último caracter
		System.out.println("La última letra de mi nombre es: " + nombre.charAt(nombre.length()-1));
		
		// Substring
		String frase="hoy es lunes";
		
		String nuevaCadena = frase.substring(6,frase.length());
		
		System.out.println("Hoy es: " + nuevaCadena);
		
		//equals: CaseSensetive
		//True: son iguales
		String alumno1, alumno2;
		
		alumno1 = "David";
		
		alumno2 = "David";
		
		// True
		System.out.println(alumno1.equals(alumno2));
		
		// Minusculas
		alumno1 = "David";
		
		alumno2 = "david";
		
		// True
		System.out.println(alumno1.equals(alumno2));
		
		//equalsIgnoreCase: No CaseSensetive
		//True: son iguales
		
		alumno1 = "David";
		
		alumno2 = "david";
		
		System.out.println(alumno1.equalsIgnoreCase(alumno2));
		
		
	}

}

Paquetes

  • Se encuentra organizadas así
  • Se invento este sistema para
    • organizar las clases
    • Evitar conflictos de nombres
    • Y controlar la visibilidad de las clases
  • Por esto las clases propias también se debe organizar en paquetes

Paquete principal o paquete por defecto: Java.lang

  • Y es el paquete que se puede utilizar por defecto
  • Para poder utilizar una clase de un paquete que no esta en la clase por defecto debemos
  • Cuando creamos una clase y no indicamos que la vamos a crear dentro de un paquete eclipse nos tira el siguiente mensaje y es solamente por causa de organización
  • Por esto debemos guardarlo dentro de un paquete

  • Por tanto si creamos un proyecto y utilizamos la clase String no ocurre ningún problema ya que pertenece a la clase Java.lang y esta incluida por defecto
  • Pero que pasa si desea utilizar una clase que no esta dentro de Java.lang
  • Por esto en el programa hay que indicarle con import que vamos a utilizar una clase que no pertenece a la clase Java.lang
  • Puede ser con *, pero aquí estamos importando todas las clases
  • Pero si se reserva la memoria necesaria para almacenar la clases
  • Pero si solo vas utilizar una

Salidas y Entradas de Datos

Clase: Scanner

  • Permite introducir información por la consola
  • Tiene 3 métodos principales que pemiten introducir:
    • nextLine: texto
    • nextInt: números enteros
    • nextInt: números dobles

Clase: JOptionPane

  • permite introducir texto

NOTA: métodos estáticos y métodos

  • NOTA: showInputDialog es un método estático, esto quiere decir que si queremos utilizar lo debemos hacer:
JOptionPane.showInputDialog();
  • Otro ejempplo de un método estático es
Math.round(3)
  • Y métodos que nos son estáticos nos obligan a instanciar un objeto de la clase
  • Por ejemplo:
Scanner miScanner;
miScanner.nextLine();

NOTA: CONSTRUCTOR

  • Es un método que posee el mismo nombre que la clase
  • Puede tener uno o varios constrcutores
  • Va depender de la cantidad de parametros
  • para este ejemplo vamos a utilizar el primer constructor y de entrada le vamos a indicar que vamos a utilizar «System.in»
  • Para crear un constructor utilizamos «new»
Scanner entrada = new Scanner(System.in);
  • Ejemplo
package pildoras;

import java.util.Scanner;

public class EntradaEjemplo1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//Creamos un objeto de tipo Scanner
		Scanner entrada = new Scanner(System.in);
		
		// Creamos un mensaje que le permite al usuario introducir su nombre
		System.out.println("Por favor introduce tu nombre: ");
		
		// Mostramos la ventana para solicitar el nombre  
		String nombreUsuario = entrada.nextLine();
		
		// Creamos un mensaje que le permite al usuario introducir su edad
		System.out.println("Por favor introduce tu edad: ");
		
		// Mostramos la ventana para solicitar la edad  
		int edadUusario = entrada.nextInt();

		// Creamos un mensaje que le permite la información introducida
		System.out.println("Hola "+ nombreUsuario + ". El año que viene tendrás " + (edadUusario +1) + " años");
				
		
		

	}

}

Clase: JOptionPane

  • Pertenece a
javax.swing
  • Ejemplo
package pildoras;

import javax.swing.JOptionPane;

public class EntradaEjemplo2 {

	public static void main(String[] args) {
		


		// showInputDialog: solicita un String
		String nombreUsuario = JOptionPane.showInputDialog("Introduce tu nombre:");
		
		// showInputDialog: solicita un String
		String edadUsuario = JOptionPane.showInputDialog("Introduce tu edad:");
		
		//Por tanto debemos parsear el String a int
		int edadFinal = Integer.parseInt(edadUsuario);
		
		// mostramos el mensaje
		System.out.println("Hola " + nombreUsuario + ". Elaño que viene tendrás: "+ (edadFinal+1) + " años");
	}

}

NumberFormat

  • Para establecerle un formato a un número utilizamos NumberFormat
package pildoras;

public class FormatoDeNumeros {

	public static void main(String[] args) {
		
		
		// Declaramos una variable de tipo docuble
		double x= 10000.0;
		
		
		//Mandamos a imprimir con formato
		// para esto utilizamos en vez de println printf (Impresión con formato )
		// printf("formato", valor)
		System.out.printf("%1.2f", x/3);
		
	}

}
  • Otro ejemplo
package pildoras;

import javax.swing.JOptionPane;

public class FormatoDeNumeros {

	public static void main(String[] args) {
		
		
		// Recibimos el valor del usuario
		String num1 =JOptionPane.showInputDialog("Introduce un número:");
		
		// convertimos a Double que es lo que ocupa sqrt
		double num2 = Double.parseDouble(num1);
		
		// Se usa printpara que no genere salto de linea
		System.out.print("La raíz de " + num2 + " es ");
		
		// Imprimimos la raíz cuadrad
		System.out.printf("%1.2f", Math.sqrt(num2));
		
	}

}

Estructuras de control: Condicionales y blucle

Condicionales

Condicional: IF

  • Ejemplo1: IF
package pildoras;

import java.util.*;

public class Condicionales004 {

	public static void main(String[] args) {
		
		// Declaramos una varible de tipo Scanner para recibir los datos del usuario
		Scanner entrada = new Scanner(System.in);
		
		//Mostramos un mensaje
		System.out.println("Itroduce tu edad:");
		
		// Obtenemos el dato del usuario
		int edad = entrada.nextInt();
		
		// Condicional
		if(edad>=18) {
			System.out.println("Usted es mayor de edad");
		}else {
			System.out.println("Usted es menor de edad");
		}
		

	}

}

Condicional: Switch

package pildoras;

import java.util.*;
import javax.swing.*;

public class Switch {

	public static void main(String[] args) {


		// Declaramos una variable entrada donde se almacenara los datos introducidos por el usuario
		Scanner entrada = new Scanner(System.in);
		
		//Creamos un menú de opciones
		System.out.println("Elige una opción: \n1: Cuadrado \n2: Rectángulo \n3: Triángulo \n4: Círculo");
		
		//Almacenamos el datos introducido por el usuario
		int figura = entrada.nextInt();
		
		// Usi de Switch
		switch(figura) {
		
			// Cuadrado
			case 1: 
				
				int lado =  Integer.parseInt(JOptionPane.showInputDialog("Introduce el lado: "));
				System.out.println("El área del cuadrado es: " + Math.pow(lado,2));
				break;
				
			// Rectangulo
			case 2: 
				
				int base 	=  Integer.parseInt(JOptionPane.showInputDialog("Introduce la base: "));
				int altura  =  Integer.parseInt(JOptionPane.showInputDialog("Introduce la altura: "));
				
				System.out.println("El área del rectángulo es: " + base*altura);
				break;
				
			
			// Triángulo
			case 3: 
				
				base 	=  Integer.parseInt(JOptionPane.showInputDialog("Introduce la base: "));
				altura  =  Integer.parseInt(JOptionPane.showInputDialog("Introduce la altura: "));
				
				System.out.println("El área del triángulo es: " + (base*altura)/2 );
				break;
				
			// Círculo
			case 4: 
				
				int radio 	=  Integer.parseInt(JOptionPane.showInputDialog("Introduce el radio: "));
			
				System.out.print("El área del círculo es: " );
				System.out.printf("%1.2f", Math.PI * ( Math.pow(radio,2) ) );
				break;

			// Default
			default:
				System.out.println("La opción no es correcta");
				
		}

	}

}

Ciclos: Clasificación

  • Indeterminados: No se sabe cuantas veces se va a repetir
  • determinado: se sabe cuantas veces se va a ejecutar

Ciclo: While

package pildoras;
import javax.swing.*;


public class AccesoAplicacion {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		String clave =  "tavo";
		
		String pass = "";
		
		while(clave.equals(pass)==false) {
			pass=JOptionPane.showInputDialog("Introduce la contraseña: ");
			
			if(clave.equals(pass)==false) {
				System.out.println("Contraseña incorrecta");
			}
			
		}
		
		System.out.println("Contraseña correcta, acceso concedido");
		
	}

}

While ejemplo 2: juego adivina número

package pildoras;

import java.util.*;

public class AdivinaNumero {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		//Generamos un número aleatorio en tre 0 y 100
		int aleatorio = (int)(Math.random()*100);
		
		// Solicitar un número
		Scanner entrada = new Scanner(System.in);
		
		int numero=0;
		int intentos=0;
		
		// Mientras sea diferentes
		while(numero!=aleatorio) {
			
			//Mostramos mensaje
			System.out.println("Introdue un número, por favor");
			
			numero = entrada.nextInt();
			
			// Si es mensor
			if(aleatorio<numero) {
				System.out.println("Intenta un número más bajo ");
			// Si es mayor
			}else if(aleatorio > numero) {
				System.out.println("Intenta un número más alto ");
			}
			intentos++;
		}
		System.out.println("Has adivinado el número en: " + intentos + " intentos");
		
		System.out.println(aleatorio);
	}

}

Do -while

  • Ejecuta el código al menos una vez
package pildoras;

import java.util.*;

public class doWhile020 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		//Generamos un número aleatorio en tre 0 y 100
		int aleatorio = (int)(Math.random()*100);
		
		// Solicitar un número
		Scanner entrada = new Scanner(System.in);
		
		int numero=0;
		int intentos=0;
		
		// Do while hace que el código se ejecute al menos una vez
		 do{
			
			//Mostramos mensaje
			System.out.println("Introdue un número, por favor");
			
			numero = entrada.nextInt();
			
			// Si es mensor
			if(aleatorio<numero) {
				System.out.println("Intenta un número más bajo ");
			// Si es mayor
			}else if(aleatorio > numero) {
				System.out.println("Intenta un número más alto ");
			}
			intentos++;
		}while(numero!=aleatorio);

		 System.out.println("Has adivinado el número en: " + intentos + " intentos");
		
		System.out.println(aleatorio);
	}

}

Ejemplo02: Peso ideal

package pildoras;

import javax.swing.*;


public class doWhile020Pesoideal {

	public static void main(String[] args) {
		
		// Variable para almacenar el genero
		String genero="";
		
		//Creamos un ciclo para pedir si es Hombre o Mujer hasta que digite h o m 
		do {
			genero = JOptionPane.showInputDialog("Introduce tu género (H/M)");
		
		}while( 
				(genero.equalsIgnoreCase("H") == false) &&
				(genero.equalsIgnoreCase("M")== false)
				);
		
		int altura = Integer.parseInt(JOptionPane.showInputDialog("Introduce tu altura en cm:"));
		int pesoIdeal = 0;
		
		if(genero.equalsIgnoreCase("H")) {
			pesoIdeal = altura-110;
		}else if(genero.equalsIgnoreCase("M")) {
			pesoIdeal = altura-120;
		}
		System.out.println("Tu peso ideal es: " + pesoIdeal+  "kg");

	}

}

For

  • ciclo determinado
  • Se sabe cuantas veces se debe ejecutar
package pildoras;

public class cicloFor021 {

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

	}

}

Ejemplo02 for: valida correo

package pildoras;

import javax.swing.*;

public class cicloFor021VerificaEmail {

	public static void main(String[] args) {
		
		
		// guardamos el correo
		String email = JOptionPane.showInputDialog("Introduce el email");
				
		// Para verificar que solo hay una arroba
		int arroba = 0;
		
		// Para que almenos tenga un punto
		boolean punto = false;
			
		//Recorremos la cadena
		for(int i =0; i< email.length(); i++) {
			
			if(email.charAt(i)=='@') {
				arroba++;
			}
			
			if(email.charAt(i)=='.') {
				punto = true;
			}
			
			
		}
		if(arroba==1 && punto==true) {
			System.out.println("El correo es correcto");
		}else {
			System.out.println("El correo NO es correcto");
		}

	}

}

Factorial

package pildoras;

import javax.swing.*;
public class cicloForFactorial {

	public static void main(String[] args) {
		// calcula factorial
		
		Long resultado=1;
		
		int numero = Integer.parseInt(JOptionPane.showInputDialog("Introduce un número"));
		
		for(int i = numero; i >0; i--) {
			resultado=resultado*i;
		}
		
		System.out.println("El factorial de "+  numero + " es " + resultado);

	}

}

Matrices (Arrays)

  • Declaración
    • int: tipo de dato a almacenar
    • []: es un array
    • mi_matriz: nombre
    • new: nuevo
    • int: tipo de dato
    • [10]: cantidad de elementos