Mayo 19, 2008 - 7:29 am - Posted by Camilo Nova
Cuando se compila una clase por consola con el comando ‘javac’ es necesario poner la extensión .java a la clase, cuando se ejecuta solo se hace con la nombre, sin extensión, usando el comando ‘java’
El parámetro para el método main(…) puede tener cualquier nombre, pero debe ser de tipo String[]
El nombre de la clase publica declarada en el archivo .java debe coincidir con el nombre del archivo.
Solo puede haber UNA clase publica en un archivo .java
Se genera un archivo .class para cada clase declarada en el archivo que es compilado.
Se puede importar paquetes completos usando el comodin ‘*’ para todas las clases comprendidas en el paquete, por ejemplo casa.*, pero no se puede usar para generalizar nombres de clases, por ejemplo casa.ap*, solamente es valido usar para importar todo el contenido de un paquete, de lo contrario se genera un error de compilacion.
Al momento de importar paquetes, se importa el nombre del paquete que se especifica en casa clase con ‘package’
La declaracion del paquete precede las de importacion de paquetes, las que a su vez preceden la declaracion de la clase.
Cada componente en el paquete corresponde a un directorio en el sistema de archivos.
El ‘classpath’ es una variable de ambiente del sistema operativo que contiene un listado de directorios o archivos JAR en los cuales el compilador y el interprete buscan por los archivos de clases. Son separados por ‘;’
JAR (Java ARchive) es un archivo con extension .jar, que contiene el conjunto de archivos .class de toda la aplicacion, incluyendo o no el codigo fuente, este archivo se crea con el comando ‘jar cf myApp.jar topDir’.
Este comando comprime en el archivo myApp.jar todo lo que se encuentre dentro de topDir.
Se puede listar el contenido de un archivo .jar con el siguiente comando: ‘jar -tf myApp.jar’ y se puede ejecutar de la siguiente manera: ‘java -jar myApp.jar’
Cuando se especifica un archivo .jar en el classpath se necesita que el nombre del archivo este al final de la linea ‘c:\myDev\myApp.jar’
La clase que contiene el metodo main(…) debe ser especificada en el archivo MANIFEST.MF con la siguiente linea ‘Main-Class: MyClass’
La importacion estatica introducida en J2SE 5.0 hace referencia a la capacidad de utilizar metodos y atributos estaticos de una clase, por lo general se accede a un atributo estatico de una clase A de la siguiente manera ‘A.comp’, si se hace la importacion estatica en la clase permite que se pueda llamar al atributo directamente como ‘comp’. La importacion se hace con la siguiente linea: ‘import static java.lang,Math.PI’.
Si luego de hacer la importacion estatica se llama algun atributo estatico haciendo uso del nombre de su clase ‘A.comp’ se genera un error de compilacion.
Si se pasa una variable primitiva como argumento para un metodo, dicha variable es pasada por-valor al metodo, con lo cual se hace una COPIA del valor para el metodo que la recibe, luego los cambios que se hagan sobre dicha variable dentro del metodo no afectan la variable con la cual fue pasada.
***Al parecer cuando se pasan parametros a los metodos, todos se pasan por-valor, osea se hace una copia de la variable en el parametro, tanto para tipos abstractos como primitivos, existe alguna forma de pasar parametros por referencia???
Los tipos de datos declarados dentro de un metodo NO pueden utilizar modificadores de acceso, los metodos y las variables de instancia SI
Si no se especifica uno de estos modificadores ‘public’, ‘protected’ y ‘private’ se utiliza el modificador por defecto.
Un metodo, clase o variable declarado como publico es accesible desde cualquier parte de la aplicacion.
*No se recomienda que las variables de instancia sean publicas, ya que estas deben ser modificadas solamente por los metodos de la clase.
El modificador ‘private’ no puede ser aplicado a una clase de alta jerarquia (la que tiene el mismo nombre que el archivo .java), una clase ‘top-level’ es aquella que no esta definida dentro de otra. Un miembro de una clase declarado privado solo puede ser accesado dentro de la misma clase que lo declaro, no desde otra clase ni de una subclase de la cual es declarado.
El modificador ‘protected’ solo puede ser aplicado a miembros de la clase, es decir a variables, metodos y subclases (inner class). Es accesible para las clases del mismo paquete y para subclases, asi esta no este en el mismo paquete.
El modificador default es usando cuando no se especifica otro tipo de modificador en la clase, metodo o atributo. La palabra reservada ‘default’ hace referencia a la sentencia ’switch’ y no a este modificador de acceso, el cual, por supuesto, no tiene palabra reservada.
Un miembro declarado como default es accesible desde cualquier clase o subclase del mismo paquete. La diferencia con el modificador de acceso ‘protected’ es que ambos pueden acceder desde el mismo paquete, pero el protected adicionalmente puede ser accesado por una subclase que herede de la clase protected de otro paquete. En default una subclase no tiene acceso al miembro declarado.
Un método no puede ser sobrecargado con un acceso menor al que fue definido, se puede otorgar un acceso mayor, digamos pasar de protected a public y similar.
El modificador ‘final’ puede ser aplicado a un atributo, un metodo y una clase. Se se aplica a un atributo el modificador ‘final’ quiere decir que su valor es constante y que debe ser declarado en su inicializacion. Si el metodo es ‘final’ quiere decir que no puede ser sobrecargado (es decir, cambiado su comportamiento en una clase que lo herede). Si la clase es ‘final’ quiere decir que nadie puede heredar de ella.
Los atributos (variables) declarados ‘final’ NO pueden ser modificados posteriormente, esto genera un error de compilación.
Los elementos estaticos ’static’ son visibles para todas las instancias de la clase, comparten la misma referencia sin importar la cantidad de instancias distintas que se puedan crear.
El modificador ’static’ puede ser utilizado para variables, métodos y a bloques de código dentro de una clase. NO para clases.
Si una de las instancias hace un cambio en un atributo estático, todas las instancias pueden ver dicho cambio.
Los atributos estaticos son inicializados al momento de cargar la clase en la VM, antes de que sea instanciada la clase que los contiene.
Un método estático SOLAMENTE puede acceder a atributos estaticos. Porque los métodos y atributos estaticos no pertenecen a una instancia especifica de la clase que los declara, sino que, a todas las instancias por igual.
Un método declarado estático no puede ser sobrecargado como no-estático y viceversa.
Un bloque de código declarado estático,
static {
..algo por aca…
}
se ejecuta ANTES de que la clase sea instanciada, se ejecuta al momento de ser cargada la clase en la VM, se ejecuta UNA sola vez y no vuelve a ser ejecutado durante la duración de la aplicación, se debe recordar que se ejecuta en el orden que son declarados en la clase desde arriba hacia abajo.
Recordar:
-Los elementos estaticos pertenecen a la clase y no a una instancia especifica de la clase.
-Un cambio en una variable estatica es visible para todas las instancias de la clase.
-Las variables estaticas son inicializadas al igual que los bloques de código estaticos en el momento de carga de la aplicación.
-Un método estatico de una clase NO puede acceder atributos no-estaticos de la clase.
-No se puede declarar como estatico: el constructor, una clase de primer nivel (top-level class), interfaz, clases internas junto con sus métodos y atributos, y variables locales.
-Se puede declarar como estaticos: miembros de primer nivel de una clase, una subclase de primer nivel y fragmentos de código.
El modificador ‘abstract’ se puede aplicar solamente a una clase o método.
Una clase abstracta no puede ser instanciada, porque por definición no se encuentra completamente implementada.
Si una clase tiene uno o mas métodos abstractos, dicha clase debe ser declarada abstracta también.
Cuando una clase hereda de una clase abstracta esta debe implementar todos los métodos abstractos que tenga dicha clase.
Debe ser una clase abstracta si:
1)Contiene uno o mas métodos abstractos.
2)Si hereda de una clase abstracta y no implementa los metodos abstractos.
3)Si implementa una interfaz y no provee implementacion para los metodos de la interfaz.
Con los métodos abstractos se puede lograr el efecto de polimorfismo, ya que el método se comporta de diferentes maneras dependiendo la implementacion.
Tambien se puede hacer polimorfismo implementando un método no abstracto de la clase que hereda, pero el modificador ‘abstract’ para el método hace obligatoria la implementacion.
Una clase o método abstracto significa que no ha terminado de ser implementado.
‘abstract’ y ‘final’ son totalmente opuestos, uno obliga la herencia y el otro no la permite.
El modificador ‘native’ implica que la implementacion del método puede que no se encuentre en el código fuente de la aplicación, sino que exista en alguna libreria que se carga dinamicamente. No es obligatorio implementarlo, pero se puede en dado caso. Se usa cuando se hace implementaciones en otros lenguajes de programación que deben ser cargadas externamente. Solamente es aplicable a métodos
El modificador aplicable únicamente a atributos (variables) de instancia ‘trasient’ se usa para indicar a la maquina virtual que en caso de que dicha clase sea “serializada”, es decir, que sea almacenada físicamente, omita la variable en cuestión y no la serialize, esto por cuestiones de seguridad respecto a algunos datos que son muy importantes para ser almacenados en disco.
El modificador ‘volatile’ también aplica solamente a atributos de instancia se utiliza para indicarle a la maquina virtual que dicho atributo puede ser cambiado en cualquier momento (asincronicamente) por otros procesos que accedan a la misma información. Solamente es utilizada en entornos de multiproceso y/0 multihilado para evitar la des-sincronizacion de la información contenida en la variable.
La gestion de memoria en java es automatica y la ejecuta el GarbageCollector que puede ser llamado System.gc(), el recolector de basura recoje aquellos objetos que tengan valor null o que no estén referenciados a ninguna parte. Para optimizar el uso de la memoria se recomienda asignar a null aquellos objetos que terminemos de utilizar.
Una manera de ejecutar código antes de que el recolector de basura haga su trabajo en un objeto se puede implementar el método finalize() el cual se ejecuta justo antes de que el recolector de basura elimine el objeto de la memoria.
A diferencia de los constructores, el método finalize() no llama al respectivo método de la super clase, asi que de querer hacerlo se debe hacer explicitamente como super.finalize().
Hay tres puntos finales por recordar:
1)La ruta completa de una clase se compone del classpath seguido del paquete y el nombre de la clase.
2)Se utilizan modificadores de acceso buscando una buen balance entre seguridad y acceso.
3)Se puede hacer elegible un objeto para el recolector de basura eliminando cualquier referencia al mismo, pero no se puede asegurar que el recolector de basura elimine el objeto sin referencia.
Tags: Java, Tecnología | Comente »
Mayo 16, 2008 - 8:00 am - Posted by Camilo Nova
Para nombrar un metodo aplican las mismas reglas que para nombrar una variable.
Recordemos que por convencion las clases deben comenzar con una letra mayuscula, mientras que los metodos y las variables deben comenzar con una letra minuscula. Por convencion, no es obligacion.
Un metodo consiste de los siguientes elementos: nombre, parametros, argumentos, tipo de retorno y modificador de acceso. Los requeridos por obligacion son el nombre y el tipo de retorno.
Un elemento estatico es visible para todas las instancias de la clase, si una instancia hace un cambio a este, todas las demas son afectadas con dicho cambio.
Una variable estatica es inicializada cuando una clase es cargada, mientras que las demas son inicializadas cuando una instancia de la clase es creada.
El metodo estatico main() solo puede acceder a miembros estaticos de la clase o a instancias creadas dentro del mismo metodo.
***
Algunas veces he visto algo asi como:
static {
…aqui van varias expresiones…
}
Declarado como si fuese un metodo, alguien sabe sobre esto???
***
Ya encontre la respuesta, este codigo se ejecuta en tiempo de carga de la clase, se usa cuando se quiere hacer algo ANTES de que la clase misma sea instanciada. Es ejecutado UNA sola vez en la carga de la clase y nunca mas vuelve a ser ejecutado durante el tiempo de vida de la aplicacion.
Las reglas para declarar un metodo con parametros multiples son las siguientes:
-Solamente puede haber una lista de parametros variables declarada en el metodo.
-Si existen mas parametros la lista de parametros variables debe ser la ultima.
-La lista de parametros variables consiste de un tipo de dato seguido por … y el nombre.
Una lista de parametros variables puede tener de 0 a n argumentos.
Estandar JavaBean:
-Las variables privadas de un JavaBean llamadas propiedades solo pueden ser accedidas por medio de los metodos get y set. La convencion para darle nombre a una propiedad es: La primera letra de la primera palabra debe ser en minuscula y luego la primera letra de la segunda palabra en mayuscula. porEjemploAsi.
-Cada propiedad no booleana tiene un metodo get que es usado para recuperar el valor de la propiedad. El nombre del metodo comienza con get seguido del nombre de la propiedad, con la primera letra de cada palabra en mayuscula, getPorEjemploAsi().
-Cada propiedad tiene un metodo set que es usado para determinar el valor de una propiedad. El nombre del metodo ser comienza con set seguido del nombre de la propiedad, con la primera letra de cada palabra en mayuscula, setPorEjemploAsi().
-Los metodos getter y setter deben ser publicos.
-Un metodo setter debe tener como tipo de retorno ‘void’ y debe tener un parametro que represente el mismo tipo de la propiedad correspondiente.
-Un metodo getter no tiene ningun tipo de parametro y su tipo de retorno corresponde con el mismo del metodo setter.
Los modificadores de acceso para una clase pueden ser:
de acceso: private, protected y public
otros: abstract, final y strictfp
Una clase anidada es una clase que es miembro de otra clase.
La clase anidada tiene acceso directo a los atributos y metodos de la clase que la anida.
Caracteristicas de las clases anidadas:
-Una clase anidada esta asociada con una instancia de su clase externa.
-A diferencia de una clase externa, una clase anidada tiene acceso ilimitado a los miembros de la clase externa, porque la clase anidada en si es un miembro mas de la clase externa.
-Asi como las variables estaticas y metodos de la clase externa, no es posible acceder directamente a los miembros estaticos de la clase externa desde la clase anidada.
-Debido a que una clase anidada es un miembro no estatico, es asociado solo con una instancia de su clase externa, no es posible definir un miembro estatico dentro de una clase anidada
-Una instancia de una clase anidada solo puede existir con una instancia de su clase externa, asi como los otros miembros no estaticos de la clase externa.
-Las clases anidadas pueden ser declaradas abstract o final, asi como cualquier otra clase y con el mismo significado.
-Los modificadores de acceso como public, private y protected pueden ser usados en clase anidadas asi como en los demas miembros de la clase externa y con el mismo significado.
-Cualquier clase anidada puede ser declarada en cualquier bloque de codigo como una clase o un metodo.
-Una clase anidada tiene acceso a cualquier variable local dentro de su rango definido.
Para instanciar una clase anidada que no es estatica se requiere que la clase externa este instanciada previamente asi:
MyClaseExterna mce = new MyClaseExterna();
MyClaseInterna mci = mce.new MyClaseInterna();
Si la clase anidada es estatica entonces se hace directamente, no es necesario que la clase externa este instanciada previamente
MyClaseInterna mci = new MyClaseExterna.MyClaseInterna();
Enum es una clase para definir constantes, puede tener metodos y variables como una clase normal.
Un Enum no puede ser declarado dentro de un metodo, solamente dentro de una clase o como una clase en si.
Se usa la palabra reservada ‘enum’ y no ‘class’ para declarar un Enum.
Asi como una clase comun, puede tener metodos, constructores y campos.
Cuando se compila el Enum se convierte en .class como cualquier otra clase.
NO es posible instanciar un Enum con el operador ‘new’.
Los Enum NO participan en la jerarquia de clases, no pueden heredar ni ser heredados.
No se puede llamar directamente un constructor de un Enum.
Un Enum puede tener un metodo main() estatico.
Un Enum puede ser utilizado en una sentencia ’switch’.
Una subclase solo hereda los miembros no-privados de la superclase (los que no son declarados private). Creo que los final tampoco se heredan, alguien sabe??
Una clase solo puede heredar de otra. Esto es llamado herencia simple.
Cuando se instancia un objeto (Objeto c = new Objeto()) se ejecuta en orden lo siguiente:
1. Ubicar espacio en memoria para la instancia
2. Inicializar las variables de instancia (por fuera de los metodos) de la clase.
3. Ejecuta el codigo del constructor.
Un constructor puede ser llamado desde cualquier otra clase con el operador ‘new’. Tambien puede ser llamado como si fuese un metodo desde otro constructor de la misma clase.
Desde un constructor de la clase se puede llamar otro constructor de la misma clase o el constructor de la superclase. Para llamar un constructor de la clase se usa la palabra reservada ‘this’ y para llamar uno de la superclase se utiliza ’super’, cualquiera que se utilize debe estar en la primera linea del constructor.
-Si no se incluye ni ‘this’ ni ’super’, el compilador hace un llamado a ’super()’ al comienzo del constructor.
-Si se incluye un ’super’ el compilador no hace ningun llamado adicional a ’super()’.
-Si son incluidas llamadas a ‘this’ entre varios constructores, al final de la cadena se debe llamar a ’super()’ porque de lo contrario el compilador hace el llamado automaticamente.
-Un constructor tiene el mismo nombre de la clase y no especifica tipo de retorno.
-Una clase puede tener mas de un constructor, si el programador no define un constructor el compilador por defecto define uno sin argumentos.
-Un constructor puede tener cero o mas parametros.
-Desde fuera de la clase el constructor debe ser llamado con ‘new’, dentro de la clase se puede usar ‘this’ o ’super’.
-A diferencia de los otros metodos, los constructores no son heredables, si una subclase no define constructor y la subclase si, el compilador de igual forma define uno por defecto sin argumentos.
-Si no hay llamado a ’super()’ el compilador lo hace por defecto siempre.
Interfaces.
Todos los metodos declarados en una interfaz son implicitamente publicos, las variables son como si fueran constantes de tipo public, final y static.
Una clase puede heredar ‘extends’ de otra clase, solamente una, y puede implementar ‘implements’ varias interfaces.
Una interfaz puede extender de otra interfaz usando ‘extends’.
Una interfaz no puede implementar ni otras interfaces ni clases.
En la sintaxis de la declaracion de la clase, el ‘extends’ precede a ‘implements’.
**Me sigo preguntando: para que sirve strictfp???
Una clase no puede extender ‘extends’ de una interfaz, debe implementarla ‘implements’
Una interfaz SI puede extender de multiples interfaces “interface A extends A,B,C”
Tags: Java, Tecnología | Comente »
Mayo 13, 2008 - 11:27 am - Posted by Camilo Nova
Un programa de computador básicamente se compone de datos, operaciones con los datos y lógica que determina las operaciones.
El nombre de una variable suele ser llamado “identificador”
Palabras clave en java:
abstract, assert, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum, extends, false, final, finally, float, for, goto, if, implements, import, instanceof, int, interface, long, native, new, null, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, trasient, true, try, void, volatile, while.
**Estas no las conozco: assert, const, goto, native, strictfp, trasient, volatile. Alguien me puede ayudar??
**El texto dice que const y goto no tienen significado y no pueden ser usadas, alguien puede aclarar eso?? rta: La palabra reservada goto, sirve para hacer código espaguetti; y no puede ser utilizada en java por que quiebra los principios de encapsulamiento; y la palabra reservada const dejó de ser utilizada por el uso de static como modificador.
Datos de datos primitivos y tamanno en bits (2 a la tamanno menos 1):
boolean - 1
byte - 8
short, char - 16
int, float - 32
long, double - 64
La sintaxis para declarar variables es: <modificador> <tipoDato> <identificador> = <valorInicial>;
Si una variable es declarada dentro de una clase pero por fuera de un método, es decir una variable que resida en “heap” se le asigna un valor por defecto, en caso contrario no, se le debe asignar un valor antes de acceder a la variable.
Las variables pueden ser clasificadas en:
locales, declaradas dentro de un método, viven en “stack”.
de instancia, declaradas dentro de la clase pero fuera de un método, viven en “heap”.
estáticas, declaradas dentro de la clase pero fuera de un método y es compartida por todos los objetos de la clase, vive en “heap”.
El valor de una variable estática se mantiene a pesar que el objeto de la clase que la declara sea nuevamente asignado, su valor no se pierde y se mantiene a lo largo de la ejecución del programa. Las de instancia mantienen su valor a lo largo de la vida del objeto que la declara.
Literales:
boolean true, false
char ‘a’, ‘\u4123′ (\u para denotar un numero hexadecimal)
int 43, 053 (octal precedido por 0), 0×2B (hexa precedido por 0X o 0x)
long 23L (sufijo L)
float 12.33, 1.25E+8 (E para denotar ‘x10 a la’), 12.33f (sufijo f para denotar float), 132d (sufijo d para denotar double)
El no declarar el valor de una variable genera un error de compilación(null pointer exception).
Todos los datos no primitivos en java son objetos, los primitivos son int, float, etc.
Una variable es instanciada al utilizar la palabra clave ‘new’, es decir se genera su valor en memoria y la variable almacena una referencia de su ubicación.
Los arreglos pueden ser tanto de tipos primitivos como no primitivos.
El arreglo como tal es un objeto, no un conjunto de tipos primitivos.
La forma de declarar un arreglo puede ser como “int[] array” o “int array[]” de las dos formas es valida la declaración.
El tamanno del array se determina al momento de la instanciacion asi “array = new int[4]“. No es posible declarar el tamanno en la declaración.
Luego de haber determinado el tamanno del array no es posible cambiarlo después.
El tipo de dato ‘enum’ es importante cuando se desea tener un conjunto de datos predeterminados, constantes, como los días de la semana o estados de algún objeto.
Ej. enum Tarjetas {VISA, MASTER_CARD, AMERICAN_EXPRESS};
Tarjetas tarj = Tarjetas.VISA;
Operadores:
+ Suma dos operandos
++ Aumenta en uno el operando
- Resta dos operandos
– Disminuye en uno el operando
* Multiplica los dos operandos
/ Divide los dos operandos
% Calcula el modulo (residuo) de dos operandos
La siguiente expresión es valida: int w = -e, siendo e un entero que es multiplicado por -1 al momento de asignar el valor, pero no cambia el valor de e como los operandos — y ++.
Operadores unitarios de incremento y decremento, si el operador se encuentra ANTES (–i) de la variable su valor se ve afectado ANTES de evaluar la expresión, si se encuentra DESPUES (i++) el valor de la variable se afecta DESPUES de evaluar la expresión.
EJ. x=7
y=++x y=>8 x=>8
y=x++ y=>7 x=>8
y=–x y=>6 x=>6
y=x– y=>7 x=>6
Una división por cero en un valor asignado a una variable, por ejemplo, int r = a/b, si el valor de b es cero antes de evaluar la expresión se genera un “ArithmeticException” en tiempo de ejecución solo si los operandos son ENTEROS, en caso de “float” o “double” el resultado es infinito (Double.NaN)
Operadores Lógicos
Operador Uso Operación
& op1&op2 AND (uno y otro)
| op1|op2 OR (uno u otro)
^ op1^op2 XOR (mismos falso, diferentes verdadero)
! !op Inversor, pasa de true a false y viceversa
~ ~100010110 Inversión de bits, cambia de 1 a 0 y viceversa
Operadores de evaluación
&& Evalúa si ambas expresiones A&&B son verdaderas para producir un resultado verdadero
|| Evalúa si una de las expresiones es verdadera para producir un resultado verdadero
Operadores de asignación
+= op1 = op1 + op2
igual para los demás: -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, >>>=
Al evaluar una expresión con tipos de datos primitivos, para hacer los cálculos el compilador convierte el operando de menor tamanno en bits al mismo del operando de mayor tamanno. Es decir, si estoy operando un int con un float el int es convertido a float para realizar la operación.
La comparación de igualdad entre dos datos primitivos se hace con el operador ==, para dos objetos se hace con el método a.equals(Object b).
En una expresión de tipo && si el primer operando es ‘false’ el segundo NO es evaluado. En una expresión || si el primer operando es ‘true’ el segundo NO es evaluado.
Solamente los tipos de datos char y boolean son de tipo unsigned.
No es posible instanciar un tipo ‘enum’ con el operador ‘new’
Tags: Java, Tecnología | Comente »
Mayo 13, 2008 - 8:05 am - Posted by Camilo Nova
Si Java tuviera un verdadero recolector de basura, la mayoría de los programas se borrarían a si mismos al ejecutarse. Robert Sewell
Tags: Java | Comente »
Mayo 11, 2008 - 6:13 pm - Posted by Camilo Nova
Como se compila un archivo java desde consola?
javac Programa.java
Como se ejecuta desde la consola?
java Programa <argumento1, …>
Es posible crear varias clases en un mismo archivo .java?
Si, la clase puede tener clases derivadas de si misma en un mismo archivo .java
Mientras el estado de un objeto es representado mediante sus variables, su comportamiento es representado mediante metodos.
Porque el metodo main(…) debe ser estatico?
Porque en la ejecucion del programa se deben crear objetos, no antes, pero como al iniciar el programa no hay objetos se debe recurrir a una llamada estatica que no requiera la instanciacion previa de un objeto.
Cuales son las reglas para nombrar variables en java?
Puede comenzar con letras a-z, A-Z, $, _, seguido de numeros 0-9 y/o caracteres anteriores y no puede ser una palabra reservada.
Una expresion es un conjunto de elementos java que representan un valor unico, tales como: “esta”+”cadena”, int a = b + 4 - i++;, args <= length.
Una sentencia es una expresion que es evaluada computacionalmente, es como tener una expresion que termina con el caracter ‘;’.
Es cierta esta sentencia: “write once, run anywhere”, y esta otra: “Everything in java is an object” y porque?
Que significa encapsulacion?
Cuando un objeto posee tanto atributos como metodos para realizar operaciones logicas, la combinacion de estos dos elementos es llamada encapsulacion.
Que significa herencia?
La propiedad de heredar atributos y metodos de otra clase llamada superclase.
Entre mas baja sea la jerarquia de una clase a nivel de herencia es mas alta su especializacion.
Cual es la clase que se encuentra en la cima de la jerarquia en java?
Object, asi no se haga explicitamente la herencia siempre cualquier clase hereda de Object.
Cual es la palabra reservada en java para expresar la herencia?
extends.
De cuantas clases puede heredar una subclase?
Una sola, a diferencia de C++ que permite la herencia multiple.
Que significa polimorfismo?
Es la exclusiva capacidad en java que permite que una super clase haga un llamado a un metodo abstracto que es definido por una subclase, lo que permite diferentes comportamientos para las distintas especializaciones de una clase.
Cuales son las areas de memoria en java y que se almacena en ellas?
Stack y Heap, en stack se almacena variables locales y llamados a metodos, en Heap se almacena la informacion disponible a nivel global como las instancias de las variables, objetos y referencias estaticas.
All objects live on the heap, always!
Cuando fue lanzado el JDK1.0?
1996
Nombre algunas mejoras para la version J2SE 5.0
Autoboxing, unboxing, for-each loop, enums, static imports, generic classes, varargs y metadata.
Cual es el tamanno de un interprete basico para java?
40 KB
Tags: Java, Tecnología | 2 Comentarios »
Mayo 11, 2008 - 6:12 pm - Posted by Camilo Nova
A partir de hoy publicare el resultado de mis jornadas de estudio en la certificacion para Programador Java 5.0 SJCP (Sun Java Certified Programmer 5.0).
Hace varios meses me propuse certificarme en esta herramienta con Sun Microsystems, y actualmente voy en algo asi como un 80% del total, aunque mis afectos ahora se inclinan por Python, no puedo desconocer todo el tiempo y la experiencia que tengo desarrollando aplicaciones empresariales en Java.
Pensamos que a nuestros clientes les da una mayor seguridad contar con una empresa certificada en aquello que dice sabe hacer, y por eso a nosotros nos importa afianzar nuestra credibilidad con este tipo de acciones.
Para comentarios o dudas pueden comentar facilmente cualquier entrada (post)
Tags: Java, Tecnología | Comente »