Questão de prova para iniciantes

Pessoal, fiz um curso de Introdução ao Java pela USP e gostaria que alguém fizesse um comentário se esse tipo de pergunta é pertinente para aferir o conhecimento em um curso de 15 dias.

CONSIDERANDO que o código compila: (não compilou)

String x = “java”;
x.replaceAll(“a”,“b”);
System.out.println(x);

a) imprime nada
b) erro de execução
c) imprime “java”
d) imprime “jbva”
e) imprime “jbvb”

Resposta correta: C

Obrigado.

para o código compilar vc deve escrever assim:

public class prova {
   public static void main(String[] args) {
      String x = "java";
      x.replaceAll("a","b");
      System.out.println(x);
   }
}

relamente imprimiu “java”, e também gostaria de saber o por que …
se alguem puder explicar…

Olá Sens,

Obrigado pela sua resposta.
A explicação é devido ao fato que na minha interpretação a questão deveria explorar o conhecimento sobre o funcionamento do procedimento em Java e não uma especificação do objeto String, pois não tivemos tempo hábil para estudar toda a abragência dos objetos.

Mesmo comlementando o código faltante, que eu sabia que faltava, não tem como saber todos os seus métodos.

É a mesma coisa que aplicar um curso de introdução á linguagem C em 15 dias e fazer perguntas sobre o comportamento de ponteiro-para-ponteiro.

Mais uma vez obigado pelo se pronunciamento.

[quote=“sens”]para o código compilar vc deve escrever assim:

public class prova {
   public static void main(String[] args) {
      String x = "java";
      x.replaceAll("a","b");
      System.out.println(x);
   }
}

relamente imprimiu “java”, e também gostaria de saber o por que …
se alguem puder explicar…[/quote]

Caro Sens,

Rodei o programa que você emsmo enviou e não rodou:

C:\jdk1.3.1_13\fontes\prova>javac prova.java
prova.java:4: cannot resolve symbol
symbol : method replaceAll (java.lang.String,java.lang.String)
location: class java.lang.String
x.replaceAll(“a”,“b”);
^
1 error

aqui rodou tudo certinho…
qual sdk vc usa?

[quote=“sens”]aqui rodou tudo certinho…
qual sdk vc usa?[/quote]

jdk1.3.1_13

O método replaceAll retorna a String modificada, mas não modifica a String em questão.
Use x = x.replaceAll(“a”, “b”);

Mais informações em
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#replaceAll(java.lang.String,%20java.lang.String)

Provavelmente, a versão que você utiliza (1.3.1) não deve suportar este método. Mas estou supondo, pois não localizei documentação dessa versão.

[quote=“edson_melo”][quote=“sens”]aqui rodou tudo certinho…
qual sdk vc usa?[/quote]

jdk1.3.1_13[/quote]

pode ser por este motivo que não esta rodando…

hoje estamos na versão jdk1.5.0;

aconselho atualizar para esta ou então para jdk1.4.2;

valeu

[]'s Victor

[quote=“sens”][quote=“edson_melo”][quote=“sens”]aqui rodou tudo certinho…
qual sdk vc usa?[/quote]

jdk1.3.1_13[/quote]

pode ser por este motivo que não esta rodando…

hoje estamos na versão jdk1.5.0;

aconselho atualizar para esta ou então para jdk1.4.2;

valeu

[]'s Victor[/quote]

Ok, vou providenciar. Mas você poderia de responder se essa questão avalia conhecimento?

achei uma explicação para esta questão…

o método replaceAll(string,string)

retorna um objéto String. Porêm ele não modifica aquela String que esta chamando o método.

para modificar defveria ser feito algo do tipo

x = x.replaceAll("a","b");

assim a saida seria “jbvb”

[]'s Victor

Concordo com vc edson_melo, acho que esta questão não mede muita coisa, mas a prova da “sun” é cheio de questões “babacas” deste tipo.

Realmente acho que o modelo de provas dele não mede conhecimento algum, porêm agente não tem muita escolha neh ? quem quer tirar o certificado tem que se submeter a vontade deles…

Agora a prova de “desenvolvedor” da sun. Esta sim mede conhecimento, por que é necessário desenvolver um projéto e depois fazer uma prova sobre este projéto. Essa sim é uma exelente avaliação…

Porêm para poder fazer esta prova é necessário ter a primeira, e ai temos que se submeter a estas provas que na verdade não provam nda…

[quote=“sens”]Concordo com vc edson_melo, acho que esta questão não mede muita coisa, mas a prova da “sun” é cheio de questões “babacas” deste tipo.

Realmente acho que o modelo de provas dele não mede conhecimento algum, porêm agente não tem muita escolha neh ? quem quer tirar o certificado tem que se submeter a vontade deles…

Agora a prova de “desenvolvedor” da sun. Esta sim mede conhecimento, por que é necessário desenvolver um projéto e depois fazer uma prova sobre este projéto. Essa sim é uma exelente avaliação…

Porêm para poder fazer esta prova é necessário ter a primeira, e ai temos que se submeter a estas provas que na verdade não provam nda…[/quote]

Ok. Sua resposta foi bastante convincente.

Ainda tenho muito “chão” para poder encarar uma prova, mas não esquecerei suas sábias palavras orientadoras.
Um abraço.
Edson

Edson,

Peço até desculpas ao Sens, mas de certa forma eu discordo dele, pois vamos avaliar. Se este questionamento fosse tão simples de se resolver, como uma simples tentativa tudo seria explicado. Se você avaliar bem a questão verá que o objetivo da mesma não era avaliar seus conhecimentos na classe String e sim, como seu curso era básico, avaliar se você realmente tinha compreendido os tipos de operadores existentes no Java, ou seja, o operador de atribuição neste caso é um deles.

Ps.: São questões como estas que muitas vezes achamos bobas que são as primeiras a nos garantir uma reprovação em qualquer certificação.

[color=“red”]Fiquemos atentos. [/color]

Forte abraço.