Estrutura do Arquivo .java

Posted by Bruno Rozendo on Tue, Jul 18, 2017
In
Tags jdk, java

Arquivos com extensão .java tem uma estrutura bem definida, nesse artigo vamos fazer um overview dessa estruta.

Dentro dos arquivos .java há a declaração da class e mais 2 unidade básicas: as variavaveis e os metodos .

Vamos ao primeiro exemplo válido:

meuarquivo.java
```java





</div>





Sim esse é um arquivo vazio, o qual é totalmente válido:

<div class="terminal">
	<div class="header">
		
			<img src="http://brunorozendo.com/images/global/terminal.png" alt="">
		
		<div class="filename">Terminal</div>	
	</div>

$ javac meuArquivo.java 
$
</div>


### Declaração da classe


Ok, mas um arquivo vazio na server de nada, então vamos add a declaração da `class`



<div class="code">
	<div class="header">
		<span class="filename">meuarquivo.java</span>	
	</div>

class MeuJava{

}
</div>



Agora vamos compilar

<div class="terminal">
	<div class="header">
		
			<img src="http://brunorozendo.com/images/global/terminal.png" alt="">
		
		<div class="filename">Terminal</div>	
	</div>

$ javac meuArquivo.java 
$ ls
meuArquivo.java  MeuJava.class
</div>


Repare que nome da `class` é diferente do nome do arquivo `.java` e o arquivo gerado tem o nome da `class` diferente, isso  é válido (pelo menos nessa situação).

Além da `class` existem somente mais 2 possibilidades: `enum` e `interface`.

Veja como ficaria

<div class="code">
	<div class="header">
		<span class="filename">meuarquivo.java</span>	
	</div>

enum MeuJava{

}
</div>




ou poderia ser

<div class="code">
	<div class="header">
		<span class="filename">meuarquivo.java</span>	
	</div>

interface MeuJava{

}
</div>





### Então vamos falar sobre variáveis.

De forma simples: variáveis guardam informações. 

Tanto `class` como `interface`  e `enum` pedem ter váriaveis.

Então vamos por variáveis na nossa `class` para vêr como funciona.


```java
class MeuJava{
	String euSouVariavelForaDoMetodo = "meu texto fora";
	public static void main(String[] args){	
		String euSouVariavelDentroDoMetodo = "meu texto dentro";
		System.out.println(euSouVariavelDentroDoMetodo);
	}
}

Compilando e executando

Terminal

$ javac meuArquivo.java $ java MeuJava meu texto dentro $

Sobre métodos

Tanto class como interface e enum pedem ter métodos.

Agora criar aquele método conhencido (main, e que é somente válido para class):

class MeuJava{
	public static void main(String[] args){
		System.out.println("entendendo java");
	}
}

Caso esteja apredendo java agora, ire fazer a seguinte analogia

Para começar uma partidade de futebol alguém tem de dar o primeiro toque. Para começar um programa ele tem de iniciar por algum lugar especifico e esse lugar é o metodo main

Agora vamos compilar e executar

Terminal

$ javac meuArquivo.java $ java MeuJava entendendo java $

Vemos que ao executar o arquivo gerado informarmos o nome da classe (MeuJava) e não o nome do arquivo.

Outra consideração

Dentro de um arquivo java pode háver mais de uma class, enum ou interface

Veja esse samba do crioulo doido (o código é valido):

meuArquivo.java

enum MeuJava{
	A(1), B(2), C(3);
	int valor;
	MeuJava(int a){
		valor = a;
	}
}

interface MinhaClasse{
	String vidaLocal = "birl";	
	default String  getEnum(){
		System.out.println("nada");
	}
		
}

class OutraCoisa{
	String euSouVariavelForaDoMetodo = "meu texto fora";
	public static void main(String[] args){	
		String euSouVariavelDentroDoMetodo = "meu texto dentro";
		System.out.println(euSouVariavelDentroDoMetodo);
	}
}

Vejamos os compilado

Terminal

$ javac meuArquivo.java $ ls meuArquivo.java MeuJava.class MinhaClasse.class OutraCoisa.class

comments powered by Disqus