FAQ Java


O que é um método estático?

É um método que afeta a classe como um todo, e não instâncias particulares da classe.


Como funciona a numeração dos argv?

Uma chamada da forma

    programa x y z
    

dá como resultado

    argv[0] = "x"
    argv[1] = "y"
    argv[2] = "z"
    

Na chamada System.out.println("hello") a palavra System se refere a uma classe ou a um pacote?

System é uma classe do pacote java.lang, out é uma variável desta classe, e println é um método desta variável.


O que acontece se eu colocar dois atributos code= numa mesma tag applet de um arquivo HTML?

Depende. Se você usar o appletviewer só vale o último atributo code=. Se for a partir de um browser, só vale o primeiro.

De qualquer forma, não é uma coisa recomendável colocar mais de um atributo code= numa mesma tag applet. Use várias tags applet se necessário.


O que é o qualificador de acesso protected?

Um membro com qualificador de acesso protected pode ser acessado por métodos das subclasses e das classes que estejam no mesmo pacote (package) que a classe onde está definido.


O comando return requer parêntesis ao redor da expressão que está sendo retornada pela função?

Não. O uso de parêntesis aí é opcional.


Quando um objeto de uma subclasse é criado, o construtor da superclasse é chamado automaticamente?

O construtor da superclasse pode ser chamado explicitamente como o primeiro comando do construtor da subclasse. Do contrário, o construtor default (sem argumentos) da superclasse é chamado automaticamente.

O construtor da superclasse sempre deve executar antes do construtor da subclasse. Por isso requere-se que sua chamada seja o primeiro comando do construtor da subclasse, se houver.

A chamada explícita ao construtor da superclasse não deve ser feita usando-se o nome da classe, mas sim a palavra reservada super.

Dá erro de sintaxe se a chamada a super não for o primeiro comando do construtor da subclasse.


O operador + converte automaticamente seu outro argumento para String se um deles for String?

O operador + é interpretado como concatenação de Strings se um dos argumentos for do tipo String.

Isto pode dar margem a resultados inesperados. Por exemplo, suponha que uma variável inteira sua x tenha valor 1. Os comandos abaixo vão dar resultados diferentes:

    System.out.println("x + 1 = " +  x + 1 );
    System.out.println("x + 1 = " + (x + 1));
    

O primeiro imprime x + 1 = 11, pois a constante 1 é concatenada à String que vinha antes.

O segundo imprime x + 1 = 2.


Joao Meidanis
Last modified: Tue Oct 28 19:29:56 EDT 1997 by JM