Chapter1 Flashcards
Estos identifiers son iguales FOO y foo
False no son iguales, java es case sensitive
Las 5 reglas de los identifiers
1) empiezan con letra, currency caracter,or connecting caracter (underscore). No puede comenzar con numero o digito.
2) luego del primer caracter pueden tener cualquier combinacion y longitud de letras,currency, connecting char, digitos
3) no tienen limite de tamano
4) no se puede usar java keywords
5) son case sensitive
Cual de las siguientes palabras se puede usar como identifier:
Abstract, boolean, byte, break, case, catch
Char, class, const, continue, default, do
Ninguna todas son java keywords
Const es un identifier?
No, es palabra reservada de java o java keyword
Finally puede ser un identifier?
No, es palabra reservada de java o java keyword
Goto puede ser un identifier valido?
No, es palabra reservada de java o java keyword
Instanceof puede ser un identifier valido???
No, es palabra reservada de java o java keyword
Strictfp puede ser un identifier????
No, es palabra reservada de java o java keyword
Assert puede ser un identifier valido en java?
No, es palabra reservada de java o java keyword
Transient es un identifier valido en java???
No, es palabra reservada de java o java keyword
Es native un identifier valido en java???
No, es palabra reservada de java o java keyword
Es synchronized palabra clave de java???
Si es un java keyword
Es volatil un keyword de java?
Si por tanto no se puede usar como identifier
Cuales son las tres reglas de naming standars de las classes????
1) first letter should be capitalize
2) se usa CamelCase
3) se usa nouns for classes
4) ex: Dog, Account, PrintWriter
Cuales son las tres reglas de naming standars de las interfaces???
1) first letter should be capitalize
2) se usa CamelCase
3) se usa adjectives para interfaces
4) ex: Runnable, Serializable
Cuales son las dos reglas de los naming standars de los metodos???
1) first letter lowercase then CamelCase
2) the names should be verb-noun pair
Ex: getBalance, doCalculation, setCustomerName
Cuales son las dos reglas de naming standars de las variables???
1) first character lowercase then CamelCase
2) should be meaningful names
Ex: buttonWidth, myString, accountBalance
Cuales son las dos reglas de naming standars de las constantes???
1) making them static and final
2) should be named using UPPER CASE letters and underscores as separators MIN_HEIGHT
Cuantos clases publicas puede tener un archivo fuente??? How many public classes can have a source code file?????
Solo uno. There can be ONLY one.
Como son las reglas en cuanto a los comentarios????
Los comentarios son independientes.
Pueden estar al principio o al final de cualquier linea en el archivo fuente.
Que pasa con el archivo si existe una clase publica???
The name of the file MUST match the name of the public class.
Example : class declared
Public Dog {} el archivo se debe llamar Dog.java
Que se hace si la clase es parte de un paquete??? O que pasa?
The package statement MUST be the FIRST line in the source code file. before any import statements that may be present.
La instruccion de paquete tiene que ser la primera linea, antes q cualquier importacion
Que pasa con los import statements o instrucciones de importacion????
Tienen q ir entre la instruccion de paquete (package statement P.S.) y la declaracion de la clase ( class declaration).
Si no hay P. S. La instruccion de importacion (import statement tiene que ser la primera linea).
Si no hay ningun statement , la CLASS declaration tiene que ser en la primera linea del codigo.
Como se aplica o a quien se le aplican las instrucciones de paquete y de importacion?
Se le aplican a todas las CLASES que esten dentro del codigo fuente.
Es decir, no se puede declarar multiples clases en un archivo y tenerlos en diferentes paquetes o que usen diferentes importaciones.
Cuantas clases puede tener un archivo de codigo fuente???? (Source code file)
Sola una publica, y mas de una no publica.
Que pasa con los archivos que no tienen clases publica?????
Pueden tener otro nombre q no sea igual al de sus clases en el mismo archivo.
Cuales son las 8 reglas de
Source file declaration rules?
1) only one public class per source file.
2) comments independientes
3) public class match el nombre del archivo.
4) paquete primera linea
5) import luego del paquete antes de la clase.
6) paquete e imports se aplican a todas las clases
7) un archivo puede tener mas de una clase nopublica.
8) naming para nonpublic classes could b anything.
Cual es el comando para invocar el compilador de java y como es la estructura????
El comando es javac
La estrctura es javac [options] [source files]
Como se llama la linea de comandos adicionales para invocar al compilador????
Se llama @argfiles
Cuales son las partes del comando para invocar al compilador como se separan??? Y ejemplo?
1) el comando es javac [options] [source files]
2) [options] & [source files] son partes opcionales del comando javac y ambos permiten multiple entradas. Separados por espacio
3) javac -version Foo.java Bar.java
Version imprime la version del compilador y le pasa al compilador dos archivos java que se separan por espacios
Que comando se usa para invocar la java virtual machine???? JVM
1) java y la estructura es
java [options] class [arguments]
Que hace en la linea de comando la instruccion javac y java???
1) javac llama al compilador
2) java llama al JVM
Se le puede hacer overload al metodo main??
Si se puede
como se ejecuta el JVM??
1) java [options] class [args]
2) [options] and [args] are optionaland they both can have multiple values.
3) se especifica EXACTAMENTE un archivo de clase para ejecutar, y el java command asume que se trata de un archivo .class, es decir no se especifica la extension .class
como se ejecuta el JVM con un ejemplo?
java -version MyClass x 1
o
java MyClass x 1
esto quiere decir muestra version de JVM, luego ejecuta el archivo MyClass.class y envia dos argumentos x y 1
que es main ()?? ojo en minuscula
main () es el metodo que usa la JVM para iniciar la ejecucion de un programa java.
Nombrar un metodo main () es suficiente para que se el metodo que la JVM usa para iniciar un programa de java????
No, el unico metodo main que tiene super poderes y es el que utiliza la JVM para iniciar la ejecucion de un programa tiene que tener la siguiente firma:
public static void main (Strings [ ] args)
cual es la firma del metodo main() que utiliza la JVM para iniciar la ejecucion de un programa en java
public static void main (Strings [ ] args)
son validas versiones de main() que no tengan la siguiente firma:
public static void main (Strings [ ] args)
una firma diferente a esa en un metodo llamado main () es legal pero va a ser tratado como un metodo normal y corriente, no tiene super poderes.
en cuanto al metodo main() que se utiliza para iniciar la ejecucion de un archivo java, que tanto se puede flexibilizar la firma, o que concesiones se pueden tomar?
1) el orden de sus modifiers puede alterarse un poquito
2) el String array no tiene que llamarse args. se puede usar la varargs syntax.
Ejemplos de la flexibilizacion del metodo main(0 “especial”, es decir el que usa la JVM para iniciar un programa.
la firma original es
public static void main (String [ ] args)
podria ser tambien
static public void main (String[ ] args)
public static void main (String … x)
static public void main (String bang_a_gang [ ])
en resumen que hace una instruccion de importacion????
ahorrarnos tiempo y tipeo .!!!!
que es un fully qualified name??? y un ejemplo???
El uso de fully qualified name es lo que utilizan los developers para que dos classes con el mismo nombre no se confundan.
ejemplo : java.util.ArrayList
que pasaria si no hago el import.java.util.Arraylist????? y quiero usar el arraylist en mi programa? y como seria si hago la importancion de :
import.java.util.ArrayList;
tendria que escribir la declaracion asi
java.util.ArrayList a = New Java.util.ArrayList(); Despues de importar seria: ArrayList a = new ArrayList( );
Como se interpretan las instrucciones de importacion o los import statements???
en este caso import.java.util.ArrayList
en el JAVA API hay un paquete llamado UTIL ese paquete contiene una clase llamada ArrayList, entonces cada vez que se vea la palabra ArrayList en esta clase es la version resumida o el atajo para java.util.ArrayList.
Esto esta correcto???
ArrayList a = New ArrayList();
java.util.ArrayList a2 =
new java.util.ArrayList ();
Si es perfactamente valido y legal.
Se puede hacer mix and match, se usan unas instrucciones con la importancion y con otras importanciones se usa el fully qualified name.
Que pasa si queremos usar diferentes clases del mismo paquete java.util? por ejemplo ArrayList and TreeSet?
Se agrega un wild card o un comodin (*) a la instruccion de importacion.
import.java.util.*
lo que dice es si ves una referencia a una clase donde no se esta muy seguro buscala en todo el paquete de esa clase.
como es la syntax del feature called “Static Import”???? y que se puede importar?
the syntax must be:
import static. followed by the fully qualified name of the static member or a wild card.
ex: import static java.lang.system.out
import static java.lang.Integer.*
2) API classes and custom classes
Que significa import static java.lang.Integer.*;
Primero se esta utilizando un feature de Static Import.
we want to use several of the static members of the java.lang.Integer class this import use the wild card to say “ I want to do static imports of all the static members in this class”
import static java.lang.System.out; public class TestStatic{ ... out.println(MAX_VALUE); }
Que podemos observar aqui????
beneficio del static import feature
se uso el shortcut para un metodo estatico y una constante.
en vez de escribir System.out.println, se escribio solo out.println.
cuales son las 3 reglas para usar el feature de los static import??
1) you must say import static
2) watch out for ambiguedades de dos paquetes pueden tener la misma constante y java no sabria cual usar.
3) se pueden hacer static import on:
a) static object references
b) constants(remember they are static and final)
c) static methods
Exam Watch:
es valida la siguiente instruccion?
import.java.*;
aunque es valida y legal esto no hace nada, no buscara en los diferentes paquetes, no se pueden hacer busquedad amplias.
Exam Watch
es valida import.java.util.*;
para q se usa el *?
si es valida se usa para buscar dentro del paquete java.util
el * se usa para buscar dentro del paquete o una clase.
Exam Watch
import static java.lang.Integer.*; es valido?
si es valido va a buscar en la clase java.lang.Integer.
como se declara una clase???
class MyCLass {}
donde se colocan los modifiers que tienen que ver con una clase?
se pueden agregar modifiers antes de la declaracion de la clase
Cuales son las dos categorias de los modifiers?
1) Access Modifiers (public, protected, private)
2) Nonaccess Modifiers (strictfp, final, & abstract )
cuantos package staments puede tener un archivo?? y cuantos import statements puede tener un archivo???
un archivo puede tener solo una instruccion de paquete ( package statement) pero puede tener multiple instrucciones de importacion (imports).
cuales son los 3 access modifiers?
1) public
2) protected
3) private
cuales son los 4 niveles de acceso?
1) public
2) protected
3) default
4) private
que tipo de acceso puede tener las classes?
las classes solo pueden tener public o dafault access.
el acceso solo puede ser public o dafault
Quien puede ver una clase que tiene dafault access???
solo la pueden ver las classes dentro del mismo paquete
una clase con un public access (public modifier) quien la puede ver?
la puede ver TODAS las clases desde TODOS los paquetes.
Que significa accesar a una clase? o cuales son las 3 cosas que se pueden hacer cuando una clase a accesa a una clase b?
1) crear una instancia de la clase b
2) extender la clase b (volverse subclass de b)
3) accesar ciertos metodos y variables dentro de la clase b, dependiendo del control d acceso de esos metodos y variables.
que significa acceso????
acess means VISIBILITY
cuales son los modificadores nonaccess que pueden tambien modificar una clase?
1) final
2) abstract
3) strictfp
una clase puede ser final y abstracta?
puede una clase ser final and abstract?
por que?
A CLASS CANNOT be both final and abstract.
porque ….
se puede generar una subclase de una clase final?
NO, a final class cannot be subclassed.
Se puede instaciar una clase abstracta??
nope, una clase abstracta no se puede instanciar.
un solo metodo abstracto en una clase que significa?
significa que toda la clase TIENE que ser abstracta.
que tipo de metodos puede tener una clase abstracta?
Una clase abstracta puede tener ambos tipos de metodos abstract y nonabstract.
Que tiene q hacer la primera clase concreta que extienda una clase abstracta?
tiene que implementar todos sus metodos abstractos.
que hacen los access modifierss?
restringuen o permiten el acceso a la clase metodo o variable que se crea
Que pasa al compilar un archivo que tiene una clase que extiende otra de otro paquete q tiene Como control de acceso default??
Como se resolveria la situacion q se presenta?
No compila, no lo puede ver. La superclase tiene acceso por defecto y esta en otro paquete
2) se resuelve poniendo las dos clases en el mismo paquete o dandole control de acceso public a la super clase
Que tenemos q hacer si queremos usar una clase publica que esta en otro paquete diferente al que estoy escribiendo???
Lo podemos ver tenemos acceso a la clase pero OJO hay que IMPORTAR la clase publica
se puede heredar una clase publica en otras palabras una clase publica es free to subclass??
si se puede heredar extender o generar una subclase de una clase publica.
cuales son los keywords que se pueden utilizar para modificar una clase con NONACCESS modifiers???
1) final
2) abstract
3) strictfp
una clase puede ser publica y final?
si se puede
para que se usa strictfp? que puede modificar?
solo puede modificar una clase o un metodo pero NUNCA UNA VARIABLE.
se puede usar strictfp para modificar una variable?
no, nunca
que quiere decir que una clase este marcada como strictfp?
significa que cualquier CODIGO DE METODO en la clase se ajusta a las normas IEE754(standar rules) para los floating points.
que significa que una clase este marcada o tenga el modifier de FINAL?
significa que la clase no se puede extender, no se pude generar una subclase. NINGUNA CLASE PUEDE HEREDAR UNA CLASE FINAL.
que pasa si una clase trata de heredar o extender una clase final???
se genera un compile error!!!
para que se marca una clase final?
cuando se necesita una garantia absoluta que ninguno de los metodos en esa clase podran ser OVERRIDEN, nadie puede cambiar la implementacion.
una clase final no se puede extender cualquier intento genera compile error.
Que quiere decir que una clase sea final?
que no se puede heredar, no se puede mejorar ningun otro programador la puede tocar.
cuando usar final?
en la practica no se usa mucho
se usa por security and safety reasons
Se puede instanciar una clase abstracta?
no se puede instanciar, NUNCA
cual es el proposito de una clase abstracta?
su razon de ser es ser extendida o heredada
en que terminan las instrucciones de metodos de las clases abstractas?
a diferencia de los metodos de las clases concretas que utilizan { } , las clases abstractas usan punto y coma;
se puede compilar y ejecutar una clase abstracta?
si siempre y cuando no se trate de instanciar
que pasa si hay un metodo que termina en ; en vez de curly braces {}? y esta dentro de una clase???
AMBOS el metodo y la clase tienen que estar marcados como ABSTRACT
si un solo metodo es abstract que tiene que pasar con la clase?
toda la clase tiene que ser declarada abstracta
Pregunta de examen
Arreglar un codigo con un metodo que termina en ; , ni la clase ni el metodo tienen el modifier abstract, que se puede hacer?
1) se cambiar por curly braces {}
2) se marcan la clase y el metodo como abstract.
Si se llegan a ver estos dos modifiers juntos que sucede final & abstract? que sucede?
error de compilacion, son opuestos uno dice extiendeme y el otro no te deja heredar.
una clase abstracta puede tener metodos abstractos y no abstractos?
si se puede
que pasa con la primera clase concreta en extender una clase abstracta?
la clase concreta tiene que implementar todos los metodos abstractos.
que es una interfaz?
es un contrato que dice que PUEDE hacer la CLASE pero sin decirle COMO lo va hacer.
quienes puede implementar las interfaces?
pueden ser implementadas por CUALQUIER CLASE desde cualquier arbol de herencia
que permite implementar una interfaz?
lo que permite es tomar clases que son distintas y darle unas caracteristicas comunes
cuando yo declaro esto que ve el compilador?
interface bounceable void bounce(); void setBounceFactor();
el compilador ve
public abstract void bounce();
public abstract void setBounceFactor();
cual es la instruccion para implementar una interfaz y un ejemplo?
class MyClass implements Bounceable{ public void bounce(){} public void setBounceFactor(){} }
que pasa con los metodos de la interfaz cuando se van a implementar por la clase?
todos los metodos tienen que estar marcados como PUBLICOS y tienen que ser implementados.
como se puede pensar una interfaz?
como una clase 100% abstracta y es implicitamente abstracta whether we type the abstract modifier in the declaration or not.
como se declaran los metodos en la interfaz?
como en la clase abstracta
abstract void bounce(); //ends with ; instead of {}
cual es la diferencia entre una clase abstracta y una interfaz?
una clase abstracta puede definir metodos abstractos y no abstractos (concretos) pero una interfaz SOLO puede definir metodos abstractos, no permite metodos concretos.
en la declaracion de una interfaz cual modifier se considera redundante?
el modifier abstract
que es implicitamente la interfaz lo tipees o no?
ABSTRACT
estas declaraciones son iguales?????
public abstract interface Rollable{}
public interface Rollable{}
si son funcionalmente identicas
Cuando se le coloca el modifier public a una interfaz?
public interface Rollable{}
se requiere cuando se quiere que tenga acceso publico en lugar de DEFAULT Access
Cuales son los modifieres que son redudantes en los metodos de una interfaz?
los modifiers redundantes en una interfaz son PUBLIC & ABSTRACT ya que todos los metodos de una interfaz son implicitamente public y abstract.
Que son los modifiers public & abstract en un metodo de una interfaz?
son redundantes ya que todos los metodos de una interfaz son implicitamente public & abstract
esto es correcto?? public interface Bounceable{ void bounce( ); // no modifiers void setBounceFactor ( int bf);//no modifiers }
si esta correcto porque todos los metodos en una interfaz son implicitamente PUBLIC and ABSTRACT
estas 5 delcaraciones de metodos de una interfaz estan correctas?
1) void bounce( );
2) public void bounce( );
3) abstract void bounce( );
4) public abstract void bounce ( ); 5) abstract public void bounce( );
si son legales e identicas porque todos los metodos de una interfaz son implicitamente PUBLIC & ABSTRACT
la siguiente declaracion de metodo de interfaz compila?
final void bounce();
no compila, error de compilacion