logo

Palavra-chave estática Java

  1. Variável estática
  2. Programa do contador sem variável estática
  3. Programa do contador com variável estática
  4. Método estático
  5. Restrições para o método estático
  6. Por que o método principal é estático?
  7. Bloco estático
  8. Podemos executar um programa sem o método principal?

O palavra-chave estática em Java é usado principalmente para gerenciamento de memória. Podemos aplicar palavras-chave estáticas com variáveis , métodos, blocos e classes aninhadas . A palavra-chave estática pertence à classe e não a uma instância da classe.

string em métodos java

A estática pode ser:

  1. Variável (também conhecida como variável de classe)
  2. Método (também conhecido como método de classe)
  3. Bloquear
  4. Classe aninhada
Estática em Java

1) Variável estática Java

Se você declarar qualquer variável como estática, ela será conhecida como variável estática.

  • A variável estática pode ser usada para se referir à propriedade comum de todos os objetos (que não é exclusiva para cada objeto), por exemplo, o nome da empresa dos funcionários, o nome da faculdade dos alunos, etc.
  • A variável estática obtém memória apenas uma vez na área da classe no momento do carregamento da classe.

Vantagens da variável estática

Isso torna seu programa memória eficiente (ou seja, economiza memória).

Entendendo o problema sem variável estática

 class Student{ int rollno; String name; String college='ITS'; } 

Suponha que haja 500 alunos em minha faculdade, agora todos os membros dos dados da instância obterão memória sempre que o objeto for criado. Todos os alunos têm seu rollno e nome exclusivos, portanto, o membro de dados da instância é bom nesse caso. Aqui, 'faculdade' refere-se à propriedade comum de todos objetos . Se o tornarmos estático, este campo receberá a memória apenas uma vez.

A propriedade estática Java é compartilhada com todos os objetos.

Exemplo de variável estática

 //Java Program to demonstrate the use of static variable class Student{ int rollno;//instance variable String name; static String college ='ITS';//static variable //constructor Student(int r, String n){ rollno = r; name = n; } //method to display the values void display (){System.out.println(rollno+' '+name+' '+college);} } //Test class to show the values of objects public class TestStaticVariable1{ public static void main(String args[]){ Student s1 = new Student(111,'Karan'); Student s2 = new Student(222,'Aryan'); //we can change the college of all objects by the single line of code //Student.college='BBDIT'; s1.display(); s2.display(); } } 
Teste agora

Saída:

 111 Karan ITS 222 Aryan ITS 

Programa do contador sem variável estática

Neste exemplo, criamos uma variável de instância chamada count que é incrementada no construtor. Como a variável de instância obtém a memória no momento da criação do objeto, cada objeto terá a cópia da variável de instância. Se for incrementado, não refletirá outros objetos. Portanto, cada objeto terá o valor 1 na variável de contagem.

lista imutável
 //Java Program to demonstrate the use of an instance variable //which get memory each time when we create an object of the class. class Counter{ int count=0;//will get memory each time when the instance is created Counter(){ count++;//incrementing value System.out.println(count); } public static void main(String args[]){ //Creating objects Counter c1=new Counter(); Counter c2=new Counter(); Counter c3=new Counter(); } } 
Teste agora

Saída:

 1 1 1 

Programa de contador por variável estática

Como mencionamos acima, a variável estática obterá a memória apenas uma vez, se algum objeto alterar o valor da variável estática, ele manterá seu valor.

 //Java Program to illustrate the use of static variable which //is shared with all objects. class Counter2{ static int count=0;//will get memory only once and retain its value Counter2(){ count++;//incrementing the value of static variable System.out.println(count); } public static void main(String args[]){ //creating objects Counter2 c1=new Counter2(); Counter2 c2=new Counter2(); Counter2 c3=new Counter2(); } } 
Teste agora

Saída:

árvore binária de travessia de pedidos por correio
 1 2 3 

2) Método estático Java

Se você aplicar uma palavra-chave estática com qualquer método, ela será conhecida como método estático.

  • Um método estático pertence à classe e não ao objeto de uma classe.
  • Um método estático pode ser invocado sem a necessidade de criar uma instância de uma classe.
  • Um método estático pode acessar membros de dados estáticos e alterar seu valor.

Exemplo de método estático

 //Java Program to demonstrate the use of a static method. class Student{ int rollno; String name; static String college = 'ITS'; //static method to change the value of static variable static void change(){ college = 'BBDIT'; } //constructor to initialize the variable Student(int r, String n){ rollno = r; name = n; } //method to display values void display(){System.out.println(rollno+' '+name+' '+college);} } //Test class to create and display the values of object public class TestStaticMethod{ public static void main(String args[]){ Student.change();//calling change method //creating objects Student s1 = new Student(111,'Karan'); Student s2 = new Student(222,'Aryan'); Student s3 = new Student(333,'Sonoo'); //calling display method s1.display(); s2.display(); s3.display(); } } 
Teste agora
 Output:111 Karan BBDIT 222 Aryan BBDIT 333 Sonoo BBDIT 

Outro exemplo de método estático que realiza um cálculo normal

 //Java Program to get the cube of a given number using the static method class Calculate{ static int cube(int x){ return x*x*x; } public static void main(String args[]){ int result=Calculate.cube(5); System.out.println(result); } } 
Teste agora
 Output:125 

Restrições para o método estático

Existem duas restrições principais para o método estático. Eles são:

  1. O método estático não pode usar membros de dados não estáticos ou chamar métodos não estáticos diretamente.
  2. this e super não podem ser usados ​​em contexto estático.
 class A{ int a=40;//non static public static void main(String args[]){ System.out.println(a); } } 
Teste agora
 Output:Compile Time Error 

P) Por que o método principal Java é estático?

Resp) É porque o objeto não é obrigado a chamar um método estático. Se fosse um método não estático, JVM cria um objeto primeiro e depois chama o método main() que causará o problema de alocação de memória extra.


3) Bloco estático Java

  • É usado para inicializar o membro de dados estáticos.
  • Ele é executado antes do método principal no momento do carregamento da classe.

Exemplo de bloco estático

 class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } } 
Teste agora
 Output:static block is invoked Hello main 

P) Podemos executar um programa sem o método main()?

Resposta) Não, uma das formas era o bloco estático, mas era possível até o JDK 1.6. Desde o JDK 1.7, não é possível executar uma classe Java sem o método principal .

 class A3{ static{ System.out.println('static block is invoked'); System.exit(0); } } 
Teste agora

Saída:

janelas.open javascript
 static block is invoked 

Desde o JDK 1.7 e superior, a saída seria:

 Error: Main method not found in class A3, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application