Como você que ama programar!
Aprenda cursos práticos SpringBoot https://edu.csdn.net/course/detail/31433
Aprenda cursos introdutórios SpringCloud https://edu.csdn.net/course/detail/31451
Série orientada a objeto:
classe e
encapsulamento de objeto
herdam palavra-chave estática
polimórfica
e interface de modo singleton
e classe interna
Prefácio
Olá a todos, neste capítulo apresentamos dois pontos de conhecimento: palavra-chave estática e modo singleton
palavra-chave estática
Estático significa estático, que pode ser usado para modificar as propriedades e métodos de uma classe.Uma vez que as propriedades e métodos são modificados por estático, eles serão compartilhados por todos os objetos da classe em vez de pertencer a um determinado objeto.
Quando certas propriedades e métodos não querem ser chamados pelo objeto, eles podem ser definidos como estáticos.
Propriedades estáticas
gramática:
static 类型 属性名;
Chamada de propriedades estáticas:
类名.属性名
也可以使用:对象名.属性
一般推荐使用类名调用静态成员
A diferença entre atributos estáticos e não estáticos
public class StaticTest {
int count;
public static void main(String[] args) {
StaticTest t1 = new StaticTest();
StaticTest t2 = new StaticTest();
StaticTest t3 = new StaticTest();
t1.count++;
t2.count++;
t3.count++;
System.out.println(t1.count);
System.out.println(t2.count);
System.out.println(t3.count);
}
}
O resultado de saída é todo 1. Se a contagem for definida como estática, o resultado de saída é 3. Por quê?
Resumindo:
- As propriedades estáticas são armazenadas na área do método e cada objeto compartilha essa propriedade estática.
- As propriedades não estáticas consistem em uma cópia separada de cada objeto.
Propriedades não estáticas Propriedades
estáticas
Constante estática
Durante o processo de desenvolvimento, precisamos de alguns dados fixos, como: Pi 3,1415926
public static final double PI = 3.1415926;
vantagem:
- Alta legibilidade
- Melhore a segurança dos dados
- Fácil de ligar e manter
Método estático
definição:
public static 返回值类型 方法名(参数){
}
transferir:
类名.方法名(参数)
Nota:
- Os métodos estáticos podem chamar diretamente outras propriedades e métodos estáticos da classe atual
- Os métodos estáticos não podem chamar diretamente as propriedades do método não estático e os métodos da classe atual
- Métodos não estáticos podem chamar diretamente as propriedades e métodos estáticos e não estáticos da classe atual
- Esta e as super palavras-chave não podem aparecer em métodos estáticos
Várias classes de ferramentas em Java usam muitos métodos estáticos, como Arrays, Math, etc.
Bloco de código estático
gramática:
static{
代码块
}
Função:
inicializar membros estáticos.
Recursos:
- O bloco de código estático é executado apenas uma vez
- Execute depois que a classe for carregada na memória, todo o código da classe será executado primeiro
- No primeiro uso da classe, use a chamada
Pergunta da entrevista: o resultado da execução do seguinte código
public class Test2 {
//静态代码块
static{
System.out.println("这是静态代码块");
}
//非静态代码块
{
System.out.println("这是非静态代码块");
}
//构造方法
public Test2(){
System.out.println("这个构造方法");
}
public static void main(String[] args) {
Test2 t1 = new Test2();
Test2 t2 = new Test2();
Test2 t3 = new Test2();
}
}
Ordem de execução:
- Bloco de código estático (executa apenas uma vez)
- Bloco de código não estático (executado uma vez por objeto)
- Método de construção (executado uma vez para cada objeto)
Importação estática
Características do jdk1.5, após importar um método estático de uma determinada classe, você pode chamá-lo diretamente sem usar o nome da classe
//静态导入
import static java.util.Arrays.sort;
public class Test3 {
public static void main(String[] args) {
int[] array = {3,5,7,8,2};
//直接调用
sort(array);
for(int n : array){
System.out.println(n);
}
}
}
Modo singleton
O design pattern é um conjunto de soluções resumidas pelos predecessores para diferentes requisitos de aplicação.Há 23 padrões de design comuns, também chamados de GOF23.
O modo singleton pertence ao modo criativo em GOF23 e sua função é garantir que apenas uma instância de uma classe possa ser criada
Cenários de aplicação do modo singleton
- Determinados cenários de negócios, como: a empresa tem apenas um chefe
- Reduza o consumo de recursos do sistema por objetos grandes, como: pool de conexão, pool de thread
Como implementar o modo singleton
degrau:
- Defina o construtor como privado
- Defina um objeto estático da classe singleton
- Defina um método estático para retornar um objeto estático
Classificação de singletons
O modo singleton é dividido em: estilo faminto e estilo preguiçoso. A
diferença é:
- Estilo chinês faminto, crie o objeto desde o início
Vantagem: Código simples
Desvantagem: se o método não for chamado, ele desperdiçará memória - Estilo lento, não crie o objeto no início, quando o método é chamado, crie o objeto novamente.
Vantagens: a alocação de memória é mais eficiente.
Desvantagens: problemas de segurança do thread
Hungry Chinese
/**
* 单例
*/
public class Singleton {
//静态对象
private static Singleton instance = new Singleton();
//私有构造方法
private Singleton(){
}
//返回对象
public static Singleton getInstance(){
return instance;
}
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
Singleton s3 = Singleton.getInstance();
System.out.println(s1 == s2);
System.out.println(s2 == s3);
}
}
Homem preguiçoso
//静态对象
private static Singleton instance = null;
//返回对象
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
Fim
Bem, há muito conteúdo neste artigo, bem-vindo para deixar uma mensagem para discutir
Se você precisa aprender outro conhecimento Java, dê uma olhada aqui no conhecimento ultra-detalhado de Java Resumo