Princípios básicos do Java 13 orientado a objeto ~ palavra-chave estática e modo singleton

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:

  1. As propriedades estáticas são armazenadas na área do método e cada objeto compartilha essa propriedade estática.
  2. As propriedades não estáticas consistem em uma cópia separada de cada objeto.

Propriedades não estáticas Propriedades
Insira a descrição da imagem aqui
estáticas
Insira a descrição da imagem aqui

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:

  1. Alta legibilidade
  2. Melhore a segurança dos dados
  3. Fácil de ligar e manter

Método estático

definição:

public static 返回值类型 方法名(参数){
}

transferir:

类名.方法名(参数)

Nota:

  1. Os métodos estáticos podem chamar diretamente outras propriedades e métodos estáticos da classe atual
  2. 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
  3. Métodos não estáticos podem chamar diretamente as propriedades e métodos estáticos e não estáticos da classe atual
  4. 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:

  1. O bloco de código estático é executado apenas uma vez
  2. Execute depois que a classe for carregada na memória, todo o código da classe será executado primeiro
  3. 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();
	}
}

Insira a descrição da imagem aqui
Ordem de execução:

  1. Bloco de código estático (executa apenas uma vez)
  2. Bloco de código não estático (executado uma vez por objeto)
  3. 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

  1. Determinados cenários de negócios, como: a empresa tem apenas um chefe
  2. Reduza o consumo de recursos do sistema por objetos grandes, como: pool de conexão, pool de thread

Como implementar o modo singleton

degrau:

  1. Defina o construtor como privado
  2. Defina um objeto estático da classe singleton
  3. 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;
}

Insira a descrição da imagem aqui

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

Acho que você gosta

Origin blog.csdn.net/u013343114/article/details/112509898
Recomendado
Clasificación