Este mes de abril comecarei fazendoalgo que sempre tive vontade de fazer mas nunca houve disciplina osuficiente. Irei fazer o post em portugues e em ingles. A ideia enao somente praticar a disciplina de estudar tecnologia comopraticar um pouco de ingles uma vez que morando no Brasil a praticada lingua fica um pouco complicada. No fim deste mes pretendo terpercorrido as principais postagens e quem sabe ate todas caso vejanecessidade com melhores abordagens em portugues e com suarespectiva traducao em ingles. Comecarei falando hoje sobreString, StringBuilder e StringBuffer espero que gostem... criticassugestoes sao bem vindos.String, StringBuilder e StringBuffer A primeira coisa que voce deveraaprender quanto a String e que ela e imutavel, por mais que vocealtere o valor dela, o que na verdade foi alterado foi a suareferencia mas o valor e a instancia continuam a mesma. Vamosdesenvolver mais isto: Vamos comecar pela declaracao deuma String. Por ser um objeto assim como tudo em java, ela poderaser declarada de varias formas, isto porque possuem seu contrutorsobrecarregado de varias formas conforme podermo ver na figura 1abaixo:Figura-1 Mas apesar de possuir variosconstrutores, os mais comuns utilizados, pelo menos pela minhaexperiencia de mercado sao: Stringvar= newString(); Stringvar1= newString("Let'sSurf!"); Entretanto existem formas mais usuaisde se declarar uma variavel String conforme abaixo: Stringvar= ""; Stringvar1= "Let'sSurf!"; Conforme ja dissemos antes, aodeclararmos um objeto String, ele nunca mais ira deixar de teraquele valor o que e possivel fazer e direcionar a variavel parauma outra instancia que essa sim aponta para outro valor que foidesejado isso quer dizer que se fizermos: Stringvar= ""; var= "Let'sSurf!"; Podemosdizer que o codigo acima cria dois objetos string, o primeiro possuium caractere de espaco, ja o segundoe um a outro objeto string criado com o valor Let's Surf! quepor sua vez e referenciado a variavel var.Quanto ao objeto anterior, ele ficou perdido sem ter nenhumavariavel a referenciado ate o heap.Explicando com imagens podemos dizer que o que aconteceu foi: Nestafigura o quadrado representaria a pilha que tem uma variavel vardeclarada em uma nuvem que seria a memoria heap, com seus circulosque seria a memoria ocupada pelo texto. Ja a seta que vai doretangulo a circunferencia e a referencia que tanto falamosapontando da variavel ao conteudo da memoria heap. Comparadocom a imagem abaixo, veremos que as imagens irao ser bem parecidas,a diferenca e que a referencia entre a variavel var e amemoria heap declarada anteriormente foi perdida, entrando em seulugar a referencia a uma nova memoria com o valor de Let'sSurf!. Quanto a antiga referencia nao existe mais, nesta imagemcolocarei uma seta tracejada como forma de orientacao mas naopense que por haver uma seta tracejada faz de ser possivel de algumaforma voltar a referencia a esta memoria do heap, se por acaso eu sobrescrevesse o valor da variavel de Let's Surf para de novo um novo objetos seria criado e este continuaria solto noHeap. Aprofundandoum pouco mais, sobre atribuicao de valores a objetos String, emuito importante nos atentarmos por exemplo veja o codigo abaixo: Stringvar1= newString("Let'sSurf"); Stringvar2= "In Rio";//atribuindovalor in Rio a variavel var2 System.out.println(var2);//imprime:In Rio var2= var1+var2;//atribuicaodo valor de var1+var2 a var2 novamente