-
“Desmontar”
public static void main(String args[]).Uma das perguntas populares da entrevista em java para calouros e muito fácil.
-
publicé um modificador de acesso. Nós o usamos para especificar o acesso a este método. Aqui o modificador é “público”, então qualquer Classe tem acesso a este método. -
static. Esta palavra-chave Java significa que usamos este método sem criar um novo Objeto de uma Classe. -
Voidé o tipo de retorno do método. Isso significa que o método não retorna nenhum valor. -
mainé o nome do método. A JVM o “conhece” como um ponto de entrada para um aplicativo (deve ter uma assinatura específica).Mainé um método onde ocorre a execução principal. -
String args[]. Este é o parâmetro passado para o método principal. Aqui temos os argumentos do tipo String que seu aplicativo Java aceita quando você o executa. Você pode digitá-los no terminal.
-
-
Qual é a diferença entre
equals()e==?Primeiro, “
==” é um operador enquantoequals()é um método. Usamos==operador para comparação de referência (ou comparação de endereço) eequals()método para comparação de conteúdo. Isso significa que==verifica se ambos os objetos apontam para o mesmo local de memória enquantoequals()compara os valores nos objetos. -
Podemos executar um programa sem
main()método?Muitas perguntas básicas da entrevista em Java são realmente fáceis. Como este. Portanto, a resposta curta é: sim, podemos. Por exemplo, podemos fazer isso usando blocos estáticos.
Você pode usar o bloco estático para inicializar o membro de dados estáticos. Ele é executado antes do
mainmétodo, no momento do carregamento da classe.class Example{ Static{ System.out.println("static block is invoked"); } public static void main(String args[]){ System.out.println("Now main method"); } }A saída é:
static block is invoked Now main method E a ausência total do método principal? Se você tentar executar uma classe comum sem o método principal, receberá o próximo erro: Método principal não encontrado na classe Teste, defina o método principal como: public static void main (String [] args) ou um aplicativo JavaFX a classe deve estender javafx.application.Application. O próprio erro diz que se este for um aplicativo JavaFX e a classe for herdada de javafx.application.Application, então é possível.
-
O que é
immutableobjeto? Você pode criarimmutableobjeto?Você não pode modificar objetos de uma
immutableclasse após sua criação. Portanto, depois de criá-los, você não poderá alterá-los. Se você tentar modificarImmutableo objeto, obterá um novo objeto (clone) e alterará esse clone durante a criação.Um bom exemplo é
String, éimmutableem Java. Isso significa que você não pode alterar o objeto em si, mas pode alterar a referência ao objeto. -
Quantos objetos são criados no código a seguir?
Uma das perguntas da entrevista técnica java que substitui #4.
String s1="Hello"; String s2="Hello"; String s3="Hello";A resposta é “apenas um” porque Java tem um String Pool. Quando criamos um objeto String usando o operador new(), ele cria um novo objeto na memória heap. Se usarmos a sintaxe literal de String, como em nosso exemplo, ela pode retornar um objeto existente do pool de String, caso já exista.
-
Quantos objetos são criados no código a seguir?
String s = new String("Hello");Existem 2 objetos. Um está no pool constante de string (se ainda não estiver presente) e o outro está no heap.
-
Qual é a diferença entre
StringeStringBuilderclassesStringBufferem Java?Há um dos líderes nas principais perguntas da entrevista em java.
Primeiro de tudo
Stringé uma classe imutável. Isso significa que você não pode modificar seu conteúdo depois de criado. EnquantoStringBuffereStringBuildersão classes mutáveis, você pode alterá-las mais tarde. Se mudarmos o conteúdo doStringobjeto, ele cria uma nova string portanto não modifica a original. É por isso que o desempenho comStringBufferé melhor do que comString.A principal diferença entre os métodos de
StringBuffereStringBuilderthat são sincronizados enquanto os de não são.StringBufferStringBuilder -
Existe alguma diferença em
Stringque foi criado usando literal e comnew()operador?Há. Se criarmos uma String com o
new()operador, ela aparecerá no heap e no pool de strings (se ainda não estiver presente). Se você criar umStringusando um literal, ele será criado no pool de strings (se ainda não estiver presente). Um pool de strings é uma área de armazenamento dentro do heap, que armazena literais de strings. -
Você pode substituir
privateoustaticmétodo em Java?Uma das perguntas complicadas da entrevista em java para novatos. Você realmente não pode substituir
privateoustaticmétodo em Java.Você não pode substituir os
privatemétodos porque o escopo do especificador de acesso privado está apenas dentro da classe. Quando você vai sobrescrever algo, devemos ter classe pai e filho. Se o método da superclasse forprivate, a classe filha não poderá usá-lo e os métodos na classe filha serão tratados como novos métodos (não substituídos).Staticos métodos também não podem ser substituídos, porquestaticos métodos são parte da própria classe e não parte de qualquer objeto da classe. Claro que você pode declarar o mesmostaticmétodo com a mesma assinatura em classes filhas, mas, novamente, eles serão tratados como novos métodos. -
Diferença entre
Abstract ClasseInterfaceUma das perguntas populares da entrevista do desenvolvedor java que se baseia nos princípios OOP. Em primeiro lugar, em Java
interfacedefine um comportamento eabstract classcria uma hierarquia.classe abstrata Interface É possível ter um corpo de método (métodos não abstratos) na classe abstrata A interface pode ter apenas métodos abstratos. No Java 8 ou mais recente, tornou-se possível definir métodos padrão e implementá-los diretamente na interface. Além disso, as interfaces no Java 8 podem ter métodos estáticos. As variáveis de instância podem estar na classe abstrata Uma interface não pode ter variáveis de instância. Construtores são permitidos A interface não pode ter nenhum construtor. Métodos estáticos são permitidos Métodos estáticos não são permitidos A classe pode ter apenas um pai abstrato Uma interface pode implementar diferentes classes A classe abstrata pode fornecer a implementação da interface. A Interface não pode fornecer a implementação da classe abstrata. Uma classe abstrata pode estender a outra classe Java e implementar várias interfaces Java. Uma interface só pode estender a outra interface Java. Uma classe abstrata Java pode ter membros de classe privados e protegidos Os membros de uma interface Java são públicos por padrão -
Podemos declarar
staticvariáveis e métodos em umaabstractclasse?Sim, é possível declarar
staticvariáveis e métodos emabstractmethod. Não há necessidade de criar um objeto para acessar o contexto estático. Portanto, podemos acessar o contexto estático declarado dentro daabstractclasse usando o nome daabstractclasse. -
Quais tipos de áreas de memória são alocadas pela JVM?
Área de classe armazena estruturas por classe, por exemplo, pool de constantes de tempo de execução, campos, dados de método e todo o código para métodos.
Heap é uma área de dados de tempo de execução onde a memória é alocada para os objetos.
Pilha armazena quadros. Ele contém variáveis locais e resultados parciais e participa da chamada e retorno do método. Cada encadeamento possui uma pilha JVM privada, criada ao mesmo tempo que o encadeamento. Um novo quadro é criado cada vez que um método é invocado. Um quadro é destruído quando sua invocação de método é concluída.
Program Counter Register contém um endereço da instrução da máquina virtual Java que está sendo executada no momento.
Native Method Stack contém todos os métodos nativos usados no aplicativo.
-
Por que a herança múltipla não é permitida em java?
Seria realmente complicado. Imagine três classes
A,BeCeCherdamAeB. Agora,AasBclasses e têm o mesmo método e você o chama de um objeto de classe filho... Qual deles?A's ouB's? Aqui temos ambiguidade.se você tentar herdar duas classes, o Java renderiza um erro de tempo de compilação.
-
Podemos sobrecarregar o
main()método?Claro, podemos ter muitos
mainmétodos em um programa Java usando sobrecarga de método. Experimente! -
Podemos declarar um construtor como
final?Não. Um construtor não pode ser declarado como
finalporque não pode ser herdado. Portanto, não faz sentido declarar construtores comofinal. No entanto, se você tentar fazer isso, o compilador Java apresentará um erro. -
Podemos declarar uma interface como
final?Não, não podemos fazer isso. Uma interface não pode ser
finalporque a interface deve ser implementada por alguma classe de acordo com sua definição. Portanto, não faz sentido fazer uma interfacefinal. No entanto, se você tentar fazer isso, o compilador mostrará um erro. -
Qual é a diferença entre
static bindingedynamic binding?O
bindingque pode ser resolvido em tempo de compilação pelo compilador é chamadostaticou ligação antecipada.Bindingde todos os métodosstatic,privateefinalé feito em tempo de compilação.No
Dynamic bindingcompilador não é possível escolher um método a ser chamado. Substituir é um exemplo perfeito dedynamic binding. Na substituição, as classes pai e filho têm o mesmo método.Static Binding class Cat{ private void talk() {System.out.println("cat is mewing..."); } public static void main(String args[]){ Cat cat=new Cat(); cat.talk(); } } Dynamic Binding class Animal{ void talk(){ System.out.println("animal is talking..."); } } class Cat extends Animal{ void talk(){ System.out.println("cat is talking..."); } public static void main(String args[]){ Animal animal=new Cat(); animal.talk(); } } -
Como criar uma classe somente leitura em Java?
Você pode fazer isso tornando todos os campos da classe privados. A classe somente leitura possui apenas métodos getter que retornam a propriedade privada da classe para o
mainmétodo. Você não pode modificar esta propriedade, o motivo é a falta do método setters.public class HockeyPlayer{ private String team ="Maple leaf"; public String getTeam(){ return team; } } -
Como criar uma classe somente gravação em Java?
Novamente, você deve criar todos os campos da classe
private. Agora, sua classe somente gravação deve ter apenas métodos setter e nenhum getter. Portanto, não podemos ler as propriedades da classe.public class HockeyPlayer{ private String team; public void setTeam(String college){ this.team = team; } } -
Cada
trybloco deve ser seguido por umcatchbloco, não é?Não. Não é uma necessidade. Cada
trybloco pode ser sem umcatchbloco. Ele pode ser seguido por um bloco catch ou um bloco final ou mesmo sem eles.public class Main{ public static void main(String []args){ try{ int variable = 1; System.out.println(variable/0); } finally { System.out.println("the other part of the program..."); } } }Saída:
Exception in thread main java.lang.ArithmeticException:/ by zero the other part of the program...
Mais um exemplo:class Main { public static void main(String[] args) throws IOException { try(InputStreamReader inputStreamReader = new InputStreamReader(System.in); BufferedReader reader = new BufferedReader(inputStreamReader)){ System.out.println("test"); } } }Saída:
test
PS: Antes do Java 8, os métodos nas interfaces podiam ser apenas abstratos. No Java 8 ou mais recente, tornou-se possível definir métodos padrão e implementá-los diretamente na interface. -
Qual é a diferença entre
throwasthrowspalavras-chave e?Throwsé usado para declarar uma exceção, então funciona de forma semelhante aotry-catchbloco.ThrowA palavra-chave é usada para lançar uma exceção explicitamente de um método ou qualquer outro bloco de código.Throwé seguido por uma instância deExceptionclasse e throws é seguido por nomes de classe de exceção.Throwé usado no corpo do método para lançar uma exceção.Throwsé utilizado em uma assinatura de método para declarar as exceções que podem ocorrer nas declarações presentes no método.É permitido lançar uma exceção por vez, mas você pode lidar com várias exceções declarando-as usando
throwa palavra-chave. Você pode declarar várias exceções, por exemplo,public void method()throws IOException,SQLException.
GO TO FULL VERSION