Por que Strings são imutáveis em Java?
Fonte: Dev.to Antes de entender por que Strings são imutáveis em Java, precisamos pensar por que tornamos algo imutável. Imutável significa que, uma vez criado, não podemos alterá-lo. A única razão pela qual podemos pensar em tornar algo imutável é para sincronização quando usado em conjunto. Esta é a razão pela qual as strings são imutáveis. Em Java, os objetos String são compartilhados e armazenados em cache no String Pool. É um local específico no heap onde as strings são armazenadas e compartilhadas entre vários threads se tiverem o mesmo valor. Por exemplo: em um pool de strings, se já existe uma string com o valor “teste” e o programa deseja criar outro objeto string com o mesmo valor, então ele obterá a mesma referência em vez de criar um novo objeto string. Agora sabemos como as strings são armazenadas no heap. Vamos ver por que eles permanecem inalterados.-
A primeira razão para a imutabilidade é a segurança do thread. Como as linhas são compartilhadas entre vários threads no conjunto de linhas, precisamos restringir qualquer thread aleatório para alterá-lo. Qualquer alteração em uma linha pode afetar outros threads que acessam a mesma linha. Se um thread quiser atualizar o valor de uma linha, ele precisará criar outra linha e referenciá-la.
-
Normalmente usamos String como chave em Map . Se as strings fossem mutáveis, qualquer um poderia alterar o valor das strings e perderíamos a chave real.
Interface em Java e herança múltipla
Fonte: Dev.to Vamos entender o que é herança múltipla. Herança múltipla é um recurso de algumas linguagens de programação orientadas a objetos em que um objeto ou classe pode herdar funcionalidade de mais de um objeto ou classe pai. Conforme mostrado na imagem acima, uma classe filha de herança múltipla pode ter duas ou mais classes base, mas para conseguir isso precisamos de uma interface.Interface
Uma interface em Java é o modelo de uma classe. Possui constantes estáticas e métodos abstratos. Ou seja, uma interface só pode conter métodos e variáveis abstratas, não pode ter corpo de método. Ela não pode ser criada da mesma forma que uma classe abstrata.Então, onde declaramos o corpo desses métodos?
O corpo do método é declarado dentro da classe onde o método é necessário de acordo com os requisitos do programador.Como declarar uma interface?
Uma interface pode ser declarada usando a palavra-chave interface . Sintaxe:interface interface_name {abstract methods}
Observação
Para usar uma interface declarada em uma classe, devemos usar a palavra-chave implements .Implementação?
Primeiro criaremos uma interface de impressão e dentro dela criaremos um método print() abstrato ;interface printgib{
void print();
}
Agora temos uma interface pronta para uso das classes, então vamos criar as classes abc e gk e implementar a interface nelas.
public class abc implements printgib{
public void print(){ //1st implementation of print
System.out.println("I love you 3000");
}
public static void main(String[] args){
abc obj = new abc();
gk obj1 = new gk();
obj.print();
obj1.print();
}
}
class gk implements printgib{
public void print(){ //2nd implementation of print
System.out.println("I am Gk");
}
}
Conforme mostrado no código acima, alcançamos herança múltipla e implementamos uma interface. Agora, para executar o código, salve o arquivo e...
javac file_name.java
java abc
GO TO FULL VERSION