-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstatic-blocks_import-static-java.txt
77 lines (59 loc) · 2.59 KB
/
static-blocks_import-static-java.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//static blocks:
public class Main {
/private int numero;
//Os blocos estáticos Java serão chamados quando a JVM carregar a classe na memória, significa que será chamado apenas uma vez
//sempre é chamado antes do construtor e antes do método main()
//dá pra ter vários blocos estáticos, todos serão executados apenas 1 vez
//se houver blocos estáticos na classe mãe eles serão executados primeiro porque o compilador carrega a classe mãe antes da classe filha.
//não pode usar this, só dá pra usar variaveis static
static {
System.out.println("I am in static block");
System.out.println("Static block will be called first than constructor!!!");
System.out.println("Static block will be called only once.");
}
static {
System.out.println("static block 2");
}
//o objetivo do bloco inicializador de instância é inicializar os membros de dados da instância.
//O bloco inicializador de instância se parece com o bloco inicializador estático, mas sem a palavra-chave static :
//esse bloco será executado sempre antes que um construtor for executado, ou seja, será executado sempre antes de criar o objeto
//vários construtores podem usar este bloco para compartilhar um código por exemplo
//dá pra usar this e variaveis static
{
this.numero = 30;
System.out.println(this.numero);
}
//construtor será chamado toda vez que você criar um objeto
public Main(){
System.out.println("I am in constructor");
}
public static void main(String a[]){
Main ksv1 = new Main();
Main ksv2 = new Main();
Main ksv3 = new Main();
Main ksv4 = new Main();
}
}
//import static:
com a importação estática, podemos acessar os membros estáticos de uma classe diretamente sem o nome da classe ou qualquer objeto.
Por exemplo: sempre usamos o método sqrt() da classe Math usando a classe Math, ou seja , Math.sqrt() , mas usando a importação estática
podemos acessar o método sqrt() diretamente
// sem import static
class Geeks {
public static void main(String[] args)
{
System.out.println(Math.sqrt(4));
System.out.println(Math.pow(2, 2));
System.out.println(Math.abs(6.3));
}
}
// com import static
import static java.lang.Math.*;
class Test2 {
public static void main(String[] args)
{
System.out.println(sqrt(4));
System.out.println(pow(2, 2));
System.out.println(abs(6.3));
}
}