
-
“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
main
mé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 é
immutable
objeto? Você pode criarimmutable
objeto?Você não pode modificar objetos de uma
immutable
classe após sua criação. Portanto, depois de criá-los, você não poderá alterá-los. Se você tentar modificarImmutable
o objeto, obterá um novo objeto (clone) e alterará esse clone durante a criação.Um bom exemplo é
String
, éimmutable
em 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
String
eStringBuilder
classesStringBuffer
em 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. EnquantoStringBuffer
eStringBuilder
são classes mutáveis, você pode alterá-las mais tarde. Se mudarmos o conteúdo doString
objeto, 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
StringBuffer
eStringBuilder
that são sincronizados enquanto os de não são.StringBuffer
StringBuilder
-
Existe alguma diferença em
String
que 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 umString
usando 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
private
oustatic
método em Java?Uma das perguntas complicadas da entrevista em java para novatos. Você realmente não pode substituir
private
oustatic
método em Java.Você não pode substituir os
private
mé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).Static
os métodos também não podem ser substituídos, porquestatic
os métodos são parte da própria classe e não parte de qualquer objeto da classe. Claro que você pode declarar o mesmostatic
método com a mesma assinatura em classes filhas, mas, novamente, eles serão tratados como novos métodos. -
Diferença entre
Abstract Class
eInterface
Uma das perguntas populares da entrevista do desenvolvedor java que se baseia nos princípios OOP. Em primeiro lugar, em Java
interface
define um comportamento eabstract class
cria 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
static
variáveis e métodos em umaabstract
classe?Sim, é possível declarar
static
variáveis e métodos emabstract
method. Não há necessidade de criar um objeto para acessar o contexto estático. Portanto, podemos acessar o contexto estático declarado dentro daabstract
classe usando o nome daabstract
classe. -
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
,B
eC
eC
herdamA
eB
. Agora,A
asB
classes 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
main
mé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
final
porque 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
final
porque 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 binding
edynamic binding
?O
binding
que pode ser resolvido em tempo de compilação pelo compilador é chamadostatic
ou ligação antecipada.Binding
de todos os métodosstatic
,private
efinal
é feito em tempo de compilação.No
Dynamic binding
compilador 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
main
mé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
try
bloco deve ser seguido por umcatch
bloco, não é?Não. Não é uma necessidade. Cada
try
bloco pode ser sem umcatch
bloco. 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
throw
asthrows
palavras-chave e?Throws
é usado para declarar uma exceção, então funciona de forma semelhante aotry-catch
bloco.Throw
A 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 deException
classe 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
throw
a palavra-chave. Você pode declarar várias exceções, por exemplo,public void method()throws IOException
,SQLException
.
GO TO FULL VERSION