miércoles, 12 de octubre de 2022

Master Java

Intell

Ctrl + clic en un metodo para ver su implementacion

Alt + insertar: generar codigo

***********

precedencia de operadores

int i = ++j;

primero se autoincrementara y luego asignara


***********

 @Deprecated(since="9") new Double(1.5) o new Integer(0); 

public Double​(double value) The static factory valueOf(double) is generally a better choice 
Double.valueof(1.5); //devuelve un wraper Double 1.5
(La forma explicita de crear un objeto Wrapper, se conoce como boxing)
La forma implicita (autoboxing) :Integer intObjeto2 = 32768;

conversion inversa (objeto referencia a primitivo)
int num = intObjeto; //implicito
int num2 = intObjeto.intValue(); //explicito

Acerca de que con cual de estas clases conviene mas trabajar las fechas en java, ya que he leido que la clase LocalDate tiene varias ventajas por sobre Date y Calendar.

Hola, si es mejor y mas robusto LocalDate de java 8


Calendar sirve para definir un objecto a una fecha determinada

Convertir calendar a date

Calendar c = Calendar.getInstance(); //calendario con la fecha actual
c.set(1982,11,30); //establecer otra fecha
Date fecha = c.getTime()
; //obtener un objeto Date desde un Calendar

System.exit(-1) Error basico

System.exit(1) Error del sistema, cuando se lanza una excepcion

----------

Cual seria la alternativa para exec() ya que en la versión 18 esta "deprecated"

String[] comandos = {"notepad"};

if (System.getProperty("os.name").startsWith("Windows")) {

    proceso = rt.exec(comandos);

}


Hola, te dejo el enlace de la documentación, según dice usar exec(String[]) pero como un arreglo de string, o bien ProcessBuilder

https://download.java.net/java/early_access/loom/docs/api/java.base/java/lang/Runtime.html#exec(java.lang.String)

the corresponding method exec(String[]) or ProcessBuilder should be used instead

----------------------

La clase solo se puede declarar public o default no private

131-1:09

Estado de un objeto los valores que tienen las variables o atributos de un objeto en cierto momento

Entidad = caracteristicas + comportamiento.

134

Principio de encapsulamiento(abstraccion que tiene respecto a sus metodos (no se conoce los detalles de como esta implementado) y visibilidad u ocultacion de los atributos: public, private, protected, polimorfismo: mismo comportamiento diferente implementación.

--------------------

POJO: Plain Old Java Objet (objeto plano de java) objeto simple que solo representa datos, atributos privados con metodos getters and setters, aunque tambien puede tener otros metodos de calculo de consulta, pero siempre contiene datos, en otros frameworks como bean

------------------

Constructor

Metodo especial de la clase para definir algun proceso de inicializacion que prepare al objeto para ser utilizado.

-Cuando se implementa un constructor sin parametros el constructor por defecto desaparece
-Solo se puede llamar con el new no se puede llamar como un metodo cualquiera

Q&A

¿Cuál es la diferencia entre usar get, set con el constructor, asi mismo como se cual usar?

Los métodos setters son para asignar un valor u objeto a una variable para MODIFICAR (yo el objeto ya creado), el get la devuelve para leerla, el constructor se usa para INICIALIZAR el objeto con datos, por lo que también se pueden asignar valores en la construcción del objeto, saludos

-----

. ¿Cuál es el orden en el que se estila irlos colocando? Me refiero a primero poner lo atributos, luego los constructores, luego setters y getters, etc.

si justamente va primero atributos, luego los constructores, luego setters y getters, luego otros métodos, aunque no hay una regla de oro para esto, pero es la practica mas usada en java y poo.

----

150

cual es la diferencia entre la relación y composición

La de asociación es para un solo objeto, mientras que composición es para una lista o arreglo de objeto, cardinalidad es la diferencia, saludos

----------------

Tarea 20 (158)

Ponerle la fecha de hoy a un objeto y luego imprimirlo

ordenes[i].setFecha(new Date());

SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
System.out.println("fecha de compra:"+df.format(ordenes[i].getFecha()));

*************

PAQUETE JAVA.LANG

Antes de nada queremos recordar que el paquete java.lang se importa automáticamente. Esto quiere decir que no es necesario poner en la clase donde se vaya a hacer uso de este paquete la cláusula o instrucción correspondiente “import java.lang”. Dentro de este paquete están gran parte de las clases más utilizadas dentro de las aplicaciones o programas creados con tecnología Java.

INTERFACES

Las interfaces que consideramos principales del paquete java.lang son las siguientes:
-  Cloneable
-  Comparable
-  Iterable

CLASES

En cuanto a lo que respecta a clases, todas son casi imprescindibles de conocer, ya que son básicas y por eso están en el paquete java.lang pero vamos a destacar unas cuantas por considerarlas principales.

Boolean, Double, String, Float, Integer
Math,
StringBuffer y StringBuilder,
System
La clase System es una de las clases más usuales. Define tres campos err, in y out que respectivamente son la salida estándar de error, entrada estándar y salida estándar. Los métodos para el manejo de estas entradas y salidas estándares de datos son bastante utilizados, al igual que el método currentTimeMillis() que devuelve la fecha actual en milisegundos. También es muy usual el uso del métodogetenv() para acceder a variables de entorno o propiedades del sistema. Cuando se invoca este método, se nos devuelve información sobre el sistema con que estamos trabajando.

EXCEPCIONES
ArithmeticException, ArrayIndexOutOfBoundsException,Exception, NullPointException, RunTimeException

CONCEPTO DE INMUTABILIDAD

Veamos el significado de inmutable, que no es precisamente sencillo de explicar. Consideremos que un objeto ocupa un espacio de memoria. Ahora diremos que hay dos tipos de objetos:

a) Objetos mutables: son aquellos cuyo espacio de memoria puede ser reemplazado por un contenido definido con posterioridad a la creación del objeto. En este caso, cuando usamos métodos modificadores es el objeto original el que sufre el cambio. (StringBuffer y StringBuilder)


b) Objetos inmutables: son aquellos cuyo espacio de memoria permanece ocupado con el objeto tal y como se creó inicialmente. ¿Significa esto que no podemos usar métodos modificadores? No, no significa eso. Significa que cuando usamos métodos modificadores en vez de redefinirse el objeto original, la variable apuntadora pasa a apuntar a un nuevo objeto que se crea, permaneciendo el original en su espacio de memoria, podemos decir que en algunos casos “inaccesible”, pero estando. (String)
----------
No olvidar que hay 2 alternativas o usar las clases completamente cualificadas (nombres de sus paquetes al nombrar una clase o usar la sentencia import)

Cuando hay 2 o mas clases con el mismo nombre en diferentes paquetes solo podemos hacer la importacion de un paquete y el resto de objetos tienen que ser cualificadas sus nombres (mejor para mi cualificar todo para que quede mas claro)

Un paquete se refleja en un directorio org.aguzman.app si pongo este nombre a un paquete intellj le crea automaticamente arbol de paquetes

ERROR PONER 
private Integer i;
suponer que sera inicializado a 0 es un error se tiene que asignar un valor o poner new Integer(0);
----------
172

Tengo la duda con respecto a las definiciones de parámetro y argumento.

Tengo entendido que el parámetro se refiere a la variable en la implementación del método.

Ejemplo:

int sumar (int a , int b){

return a +b

}

Mientras el argumento es al valor enviado al invocar el método.

Ejemplo:

ClaseEjemplo.sumar(3, 5);

Hola, si perfecto eso es en estricto rigor, esta perfecta esa definición

-------

Cual es la diferencia sobre carga de metodos con polimorfismo?

Hola, sobre carga de métodos es una forma de hacer polimorfismo, muchas formas, eso significa y al sobrecargar estamos implementando muchas formas de escribir un método con diferentes argumentos y tipos. saludos

------

Buen día, he estado buscando sobre el polimorfismo y la verdad el concepto de polimorfismo lo dan es a nivel de objetos, no de métodos. O tal vez no lo he comprendido bien. Mi pregunta es, la sobrecarga, sobreescritura son polimorfismo? Muchas gracias

si significa muchas formas por eso sobrecarga, sobreescritura es polimorfismo, diversas formas de implementar alguna funcionalidad.

------

uso de los argumentos variables (varargs): se maneja como un arreglo

**********

Para impedir la herencia usamos la palabra final

final public class Persona{...} 

Impedir la sobreescritura de un método que pueda ser heredado

public class Persona {

final public void metodoDelPadre() {// hacer algo importante

}

***********

182

La llamada a constructor de la superclase (sin argumentos) es opcional igual el sistema lo llama implicitamente

La llamada a constructor de la superclase debe ser el primer instruccion en la clase hija

*************

¿Cuál codificación debo usar para que la terminal imprima caracteres del español como la ñ o las tildes?

https://www.udemy.com/course/master-completo-java-de-cero-a-experto/learn/lecture/21799550#questions/17221190

***********

191

¿que ventajas tengo al implementar clases abstractas?

familias de  objetos y reutilización de código, ademas diseño un método que esta presente en toda la jerarquía pero se implementa de forma distinta en cada una de ellas, lo explico en el curso con detalle y ejemplos.