Aula 03 ExerciciosJavaSimples Respostas 22-02-2014

download Aula 03 ExerciciosJavaSimples Respostas 22-02-2014

of 9

Transcript of Aula 03 ExerciciosJavaSimples Respostas 22-02-2014

  • Paratodasasperguntas,consideraraverso6.0doJava.

    1. Escolhaaalternativacomumadeclaraoerrada:a) inti=32;b) longj=32000;c) floatf=45.0;d) doubled=45.0;

    Arespostacorretaaletra(c).Issoporqueaoutilizar45.0oJavaporpadroirdeduzirqueonmeroumdouble(enoumfloat).Comoodoubletemumarepresentaode64bitseofloatde32bits,colocarfloatf=45.0umatentativadearmazenarumvalorde64bits(onmero45.0)emumavarivelde32bits(float).

    Paracorrigiroproblemautilizamosfloatf=45.0F;(essaletraFdizqueo45.0umfloatenoumdouble).

    2. Oqueacontecequandotentamoscompilareexecutarocdigoabaixo?

    public class Test {static int age;public static void main (String args []) {

    age = age + 1;System.out.println("The age is " + age);

    }}

    a) Compila,rodaenoapresentanadanasadapadrob) Compila,rodaeapresentanasadapadroTheageisc) Compila,rodaeapresentanasadapadroTheageis1d) Compilaederrodeexecuoquandotentamosexecutar.

    Arespostacorretaaletra(c).AquiimportantesaberalgumascoisasdoJava:a)quandovocrodaessaclasseovalorinicialdeage0(ageumatributo)b)mtodosestticos(nonossocasoomtodomain)somentepodemacessaroutrosatributosoumtodosestticos.Assim,dedentrodomainpodemosacessaroatributoageporqueageesttico(static).

    3. Qualalternativaseguinteacorreta?a) 128>>1d64b) 128>>>1d32c) 128>>>1d32d) 128>>1d64

    Ooperadorde>>fazodeslocamentodeparadireitaemumaposio. Comoo128representadopor0000000010000000(utilizeisomente16bitsnoJava,intrepresentadocom32bits).Umdeslocamentoparadireitode1bitfariaoseguinte

    0000000010000000>>1 0000000001000000

    Ouseja,64.Umamaneirafcildefazerissoqueodeslocamentode1bitparaadireitaem

  • binriodivideonmeropor2.Umdeslocamentode1bitparaaesquerdamultiplicapor2.Somentecuidadocomobitmenossignificativo(maisaesquerda)eomaissignificativo(maisaesquerda).

    4. Qualdasseguintesalternativasretornaverdadeiro(true)?a) John==johnb) john.equals(john)c) john=johnd) john.equals(newjohn)

    Aprimeiraalternativanoretornatruepoissorealmentevaloresdistintos(deendereo).Asegunda alternativa utiliza o mtodo equals para comparar Strings. O mtodo equals semprecomparaovalordaString.Portantoa(b)retornatrue.

    Aalternativa(c)realizaatributio(=)enocomparao(==).Altimaalternativaestsintaticamenteincorreta.

    Nomais,emJava,asseguintesopestambmretornariamtrue:john==johne"john".equals(newString("john"))

    5. Qualdasseguintesalternativascorreta?a) Objecto=newButton(A);b) Framef=newPanel();c) Booleanflag=true;d) Booleanflag=false;

    AquideveseconhecerumpoucodalinguagemJava.Arespostacorretaa(a).Masvamosinicialmentedescartarasoutras.EmJava,quandoprogramamosinterfacesgrficasutilizamosumclasseFrame(ouaJFramenoSwing).MasaclassePanelnoumaFrame,portantealetrabestincorreta.EmJavaexisteotipoprimitivobooleaneaclasse(Wrapper)Boolean.Noentanto,aletra(c)esterradapoisovalortruenodeveriaestarentreaspas.Ocorretoseria:

    Booleanflag=true;

    Amesmaidiavaleparaaletra(d).Aletra(a)est corretaporqueemJavaTODASasclassessofilhas(ounetas,oubisnetas)deObject.Portanto,podemosfazer:

    Objecto=newButton(A);

    AindaqueButtonsejaumaclasseutilizadaparacriarinterfacesgrficas(GUI).

    6. Oqueiracontecerquandocompilareexecutaroseguintecdigo?

    class Whitney{ private Whitney(){ System.out.println("zero param Whitney"); } protected Whitney(int i){ System.out.println("int param Whitney"); }

  • public Whitney(String s){ System.out.println("String param Whitney"); }}public class Andhilary{ public static void main(String argv[]){ new Andhilary().go(); } public static void go(){ hoe(new String("beans")); } protected void hoe(String s){ System.out.println(s); }}

    a) Errodecompilaooconstrutornopodeserprivado.b) Errodecompilaoomtodomainestdeclaradodeformaincorreta.c) Errodecompilaoporproblemasencontradosnomtodogo().d) Compila,executaeapresentanasadapadrobeans

    Bom,apesardetermosmtodoschamandomtodosessanoumaquestocomplicada.Bem,inicialmente,podemosSIMterumconstrutordeumaclassecomvisibilidadeprivate.Esse'ocasodaclasseWhitney.

    Quanto a classe Andhilary o mtodo main cria um objeto da classe Andhilary (newAndhilary)echamaomtodogo(().Esseobjetosemnome(newAndhilary())chamadodeobjetoannimo(porquenofizemosalgocomoAndhilaryQ=newAndHilary())

    Assim,outraformadeprogramaromtodomain()seria:public class Andhilary{ public static void main(String argv[]){ Andhilary Q = new Andhilary();

    Q.go(); }

    Oproblemaestomtodogo().Eleummtodoestdo(static)Eleatpodeserchamadopormeiodeinstnciasdaclasse(nonossocasopormeiodainstnciaannimanewAndhilary())masomtodogo()chamaomtodohoeinternamente.Omtodohoeestticoenopodeserchamadopelomtodogo().

    Portanto,aalternativacorretaa(c).

    7. Oqueiracontecerquandocompilareexecutaroseguintecdigo?

    public class Phr{ public static void main(String argv[]){ System.out.print(Integer.parseInt("10",10)); System.out.print(Integer.parseInt("10")); System.out.print(Short.parseShort("10")); System.out.print(new Boolean(true)); }

  • }a) ErrodecompilaoporterchamadoomtodoparseIntdemaneiraincorreta.b) Errodecompilao,poisoconstrutorBooleanrequeraspasenvoltadetrue.c) Compila,executaeapresentanasada1000000000001010trued) Compila,executaeapresentanasada101010true

    Arespostaaletra(d).Primeiroimportanteobservarqueocdigousaprintenoprintln.

    OcomandoSystem.out.print(Integer.parseInt("10",10));

    converteaString10dabase10(decimal)parainterirooqueresultaem10.Aquicabeumaobservao:

    Porexemplo:System.out.print(Integer.parseInt("11",2));

    ResultanaconversodaString11nabase2(binrio)parainteriro.Assim,(11)23,portantooresultadodaconverso3.

    Jocomando:System.out.print(Integer.parseInt("10"));

    ConverteaString10parainteiro.Opadroutilizarabase10.Portantoresultaem10

    novamente.Oterceirocomando:System.out.print(Short.parseShort("10"));

    ConverteaString10parashort(umtipoprimitivoemJavauminteirocomum16bits).Portanto,oresultado10(obviamente,podemosrepresentaro10com16bitscasocontrrio,teramosumerro).

    Finalmente,ocomando: System.out.print(newBoolean(true));

    imprimenatelaoobjetoBooleancomvalortrue.Oresultadotrue.

    Concatenandoasrespostas(lembrandoqueusamosoprintenoprintln)teremos101010true.

    8. Oqueaconteceuquandotentamoscompilareexecutaroseguintecdigo?

    public class Anova{ public static void main(String argv[]){ Anova an = new Anova(); an.go(); } public void go(){ int z=0; for(int i=0;i

  • System.out.println(z); } for(;;){ System.out.println("go"); }

    }}

    a) Errodecompilaoporqueoprimeirolaoforestincorreto.b) Errodecompilaoporqueosegundolaoforestincorreto.c) Compila,executaeapresentanasadapadroosnmerosde0a9seguidopelapalavra

    go.d) Compila,executaeapresentanasadapadroosnmerosde0a9seguidoporum

    nmeroinfinitodepalavrasgo.

    Nohnadadeerradonessecdigo.Portanto,elecompilaeexecuta.Portanto,descartamosasalternativas(a)e(b).Agoradevemosentenderasintaxedolao

    for(;;)

    IssofazumlaoINFINITO,poisacondioparadarcontinuidadenolao(aqueseencontranomeiodofor)noexistee,portanto,consideradaTRUE!

    Portantoaalternativacorretaaletra(d).

    9. Oqueiraconteceraotentarmoscompilareexecutaroseguintecdigo?

    import java.util.*;public class VecOrder{ public static void main(String argv[]){ new VecOrder(); } VecOrder(){ Vector child = new Vector(); child.add("harry"); child.add("molly"); child.add("steven"); child.add("helen"); Collections.sort(child); for(String element : child){ System.out.print(element); } }}

    a) ErrodecompilaoporproblemasnacriaodeumobjetodaclasseVector.b) Compilamasderrodeexecuo,poisomtodoCollections.sortpodeapenasordernar

    objetosdaclasseList.c) Compila,executaaapresentanatela:HarryMollyStevenHelend) Nenhumadasanteriores.

    Ocdigoprincipal(main)criaumobjetodaclasseatual(VecOrder).Portanto,oconstrutordaclassechamado.Nessecaso,oconstrutorcriaumVectordeobjetosString(Vector)e,

  • emseguida,adiciona4elementosnomesmo.Finalmente,aochamarCollections.sort(child);oVectorchildordenado.AordenaodeStringsfeitanaordemaltabtica,eportanto,oresultadoserharryhelenmollysteven.

    Observarqueaalternativa(c)esterradapoisasprimeirasletrasdosnomesestoemcaixaalta.Assim,arespostacorretaaletra(d).

    10.Considereoseguintecdigo.

    public class Inkberrow{// aqui

    }

    Quaisdasalternativasseguintespoderiamsercolocadasdeformacorretanolugardocomentrio//aqui?IpublicclassAmbridge{}IIprivateclassAmbridge{}IIIstaticclassAmbridge{}IVpublicvoidclassAmbridge{}

    a) somenteaIb) somenteaIeIIc) somenteI,IIeIIId) somenteI,IIIeIV

    possvelcriarclassesdentrodasprpriasclasses.essasclassesinternassochamadasdeinnerclass.Vocpodecriarclassesinternasnormalmentecompublic,protected,privatenormalmente.Comoaclasseinterna,elaaindapodeteromodificadorstatic.TodasassintaxesdaI,IIeIIIestocorretas.AIVesterradaporusarvoid(queumtipoderetornoutilizadosomenteparamtodos).Portanto,aalternativacorretaaletra(c).

    11.QualalternativaaseguirmelhordescreveoqueumJavaMap?a) Umvetorpararepresentaogeogrficasem2Db) Umaclassequecontmelementosdevetornicosc) Umaclassequecontmparesdenmerosnicosd) Umainterfacequegarantequeasclassesqueaimplementamnopodemcontem

    duplicatas.

    UmMapemJavaumaINTERFACEquegarantequeoselementosqueaimplementamnotenhamelementorepetidos.Ouseja,letra(d).

    Verrefernciahttp://download.oracle.com/javase/1.4.2/docs/api/java/util/Map.html

    12.Oqueacontecesetentarmosexecutarecompilaroseguintecdigo?

    public class Dsr{ public static void maim(String argv[]){ Dsr d = new Dsr();

  • int _out = 19; d.scdig(_out); System.out.println(_out); } public void scdig(int _out){ _out= _out +10; _out=_out++; }}

    a) Errodecompilaoporqueavriavel_outcomeacom_b) Compila,executaeapresentanasadapadro19c) Compila,executaeapresentanasadapadro29d) Nenhumadasanteriores.

    AquidevemosterumaatenoENORME.Omtododaclasseomaimenomain.Portanto,essaclassecompilasemproblemasMASNOEXECUTA!!Portanto,alternativa(d).

    SEEXECUTASSE,oresultadoapresentadoseria19.IssoporqueomtodoscdigrecebeumtipoprimitivoetiposprimitivosemJavasopassadoscomovalor.Issoquerdizerquesehouverqualquermodificaonovalordavariveldentrodomtodonomodificaovalororiginal(foradomtodo).

    OsobjetosemJavasopassadosporreferncia.

    13.Considereoseguintecdigo.QualalternativaapresentaumnomedemtododeacordocomasconvenesdoJavaBeans?Onomenomtodosercolocadonolugardocomentrio/*mtodoaqui*/.

    class Person{ private int Age; /* mtodo aqui */ { return Age; }}

    a) privateintthisAge()b) publicintthisage()c) publicintgetAge()d) publicintsetAge()

    Nocaso a implementaodomtodo umreturn Age (retorna o valor do atributo) e,portanto,umget.PorconvenoonomeserpublicintgetAge(),ouseja,letra(c).Ainda,valeressaltarqueseoatributofosseage(enoAge)onomedomtodotambmseriagetAge().

    14.Oqueacontecesevoctentarcompilareexecutaroseguintecdigo?

    class MyWrapper { private Integer iw;

  • MyWrapper(int i){ iw = new Integer(i); } public int getInt(){ return iw.intValue(); } public double getDouble(){ return iw.doubleValue(); }}

    public class Scd{ public static void main(String argv[]){ Scd sc = new Scd(); sc.uphampton("11"); } public void uphampton(String s){ int i = Integer.parseInt(s); MyWrapper mw = new MyWrapper(i); System.out.println(mw.getDouble()); }}

    a) Compila,executaeapresentanatelao11.0b) Compila,executaeapresentanatelao11c) Errodecompilao,aclasseMyWrapperestcomproblemas.d) Errodeexecuo

    Apesardaquantidadedecdigo,noherrosaqui.AclasseIntegerumaclasseWrapper,ouseja,elaservepararepresentarotipoprimitivointnaformadeObjetosJava.Comisso,elafornecealgunsrecursosinteressantescomoporexemplo,retornarovalorinteiroarmazenadonoObjetonaformadedoublepormeiodomtododoubleValue.Observeocdigo

    publicdoublegetDouble(){returniw.doubleValue();}

    AclasseMyWrappercriadaapenasutilizaosserviosdaInteger.

    ObservandoomtodomaindaclasseScd,elechamaomtodouphamptonpassandocomoparmetroaString11.DentrodomtodouphamptonconvertemosaStringparainteiro(Integer.parseInt(s))e,emseguida,criamosumobjetoMyWrapperechamaomtodogetDouble().EssemtodochamaodoubleValuedaclasseInteger.Assim,oresultadoseronmero11noformatodouble,ouseja,11.0.Arespostacorretaaletra(a).

    15.Qualoresultadoaosecompilarerodaroseguintecdigo?

    public class Test {static int total = 10;public static void main (String args []) {

    new Test();}

  • public Test () {System.out.println("In test");System.out.println(this);int temp = this.total;if (temp > 5) {

    System.out.println(temp);}

    }}

    a) Aconteceumerrodecompilaob) Aconteceumerrodeexecuoc) Ovalor10umdosvaloresapresentadosnasadapadrod) Ovalor9umdosvaloresapresentadosnasadapadro

    Ocdigoprincipal(main)apenascriaumobjetoannimodaclasseatual(Test).PortantooconstrutordaclasseTestchamado.OcdigodoconstrutorinicialmenteapresentanatelaaStringIntest.Emseguida,aoimprimirthis,elairapresentarnatelaoobjetoTestcriado.AofazerissooJavairchamaromtodotoString()daclasseTest,ouseja,

    System.out.println(this);amesmacoisaque

    System.out.println(this.toString());

    ComoaclasseTestnopossuiomtodotoString(),omtododaclassepaichamado,nestecaso,omtodotoString()daclasseObject(queaclassepaideTest)apresentanatelaonomedaclasseseguidode@seguidodoendereodememriadoobjeto.

    Finalmente,comotemprecebeovalordethis.total,ovalordetempser10eomesmoserimpressonatela.UmaPOSSVELsadadessecdigoseria:

    IntestTest@19f953d10

    Assim,arespostacorretaaletra(c)