Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: Java ::: Pacote java.lang ::: StringBuffer

Quais as diferenças entre as classes String e StringBuffer? Quando devo substituir uma pela outra?

Quantidade de visualizações: 2657 vezes
Tanto a classe String quanto a classe StringBuffer (e seu irmão para código não sincronizado StringBuilder) facilitam nosso trabalho na hora de manipular strings. Mas, há diferenças interessantes entre estas duas classes.

Vamos começar pela classe String. Um objeto String é IMUTÁVEL, ou seja, uma vez criado, seu conteúdo não pode ser modificado. Qualquer modificação ocasiona a criação de um novo objeto String. Veja o trecho de código abaixo:

package estudos;

public class Estudos{
  public static void main(String[] args) {
    // criamos um objeto da classe String e usamos a variável frase para
    // referenciá-lo
    String frase = "Gosto de C e Java";

    // agora a variável frase2 é uma referência ao objeto String criado anteriormente 
    String frase2 = frase;
    
    System.exit(0);  
  }
}

O que ocorre neste código é que o compilador mantém apenas um cópia do texto "Gosto de C e Java" e ambas as variáveis frase e frase2 apontam (referenciam) este texto. Veja agora:

package estudos;

public class Estudos{
  public static void main(String[] args) {
    // criamos um objeto da classe String e usamos a variável frase para
    // referenciá-lo
    String frase = "Gosto de C e Java";

    // agora a variável frase2 aponta para um novo objeto String 
    String frase2 = frase.toUpperCase();
    
    // vamos exibir o conteúdo da variável frase
    System.out.println(frase);
    
    // vamos exibir o conteúdo da variável frase2
    System.out.println(frase2);
    
    System.exit(0);  
  }
}

Ao executarmos este código nós teremos o seguinte resultado:

Gosto de C e Java
GOSTO DE C E JAVA

Veja que agora nós efetuamos um chamada ao método toUpperCase() do objeto frase e atribuímos o resultado à variável frase2. E aqui eu destaco bem o conceito de imutabilidade. Em vez de converter o conteúdo da string original para letras maiúsculas, o compilador criou um novo objeto String (guardando a frase em letras maiúsculas) e o atribuiu à variável frase2. Assim, baseado neste experimento, podemos concluir que todas as vezes que modificamos o conteúdo de uma String, o compilador cria um novo objeto String e descarta o anterior. A memória ocupada pelo String anterior será liberado somente após o Garbage Collector detectar os objetos sem referência e proceder com a limpeza.

A classe StringBuffer (e também StringBuilder), por sua vez, é MUTÁVEL, ou seja, as modificações que fazemos em objetos desta classe são mantidas no mesmo objeto. Nenhum novo objeto é criado. Veja:

package estudos;

public class Estudos{
  public static void main(String[] args) {
    // criamos um objeto da classe StringBuffer e usamos a variável frase para
    // referenciá-lo
    StringBuffer frase = new StringBuffer("Gosto de C e Java");

    // agora a variável frase2 aponta para uma alteração no objeto StringBuffer anterior
    StringBuffer frase2 = frase.append(" e PHP.");
    
    // vamos exibir o conteúdo da variável frase
    System.out.println(frase);
    
    // vamos exibir o conteúdo da variável frase2
    System.out.println(frase2);
    
    System.exit(0);  
  }
}

Ao executarmos este código nós teremos o seguinte resultado:

Gosto de C e Java e PHP.
Gosto de C e Java e PHP.

Veja que agora a alteração no conteúdo do StringBuffer foi refletida tanto na variável frase quanto frase2.

Link para compartilhar na Internet ou com seus amigos:

C++ ::: Dicas & Truques ::: Strings e Caracteres

Como comparar strings em C++ usando o método compare() da classe String

Quantidade de visualizações: 22337 vezes
Nesta dica mostrarei como podemos usar a função compare() da classe String da linguagem C++ para comparar duas palavras, frases ou textos.

Se as duas strings forem iguais, o valor 0 é retornado. Um valor diferente de 0 indica que as duas strings não são iguais. Lembre-se de que esta função distingue entre maiúsculas e minúsculas.

Veja como esta função pode ser usada:

int compare(const string& str) const;
int compare(const char* s) const;

Podemos chamar esta função de duas formas:

a) Fornecendo uma variável como parâmetro;
b) Fornecendo uma string entre aspas.

Veja agora um exemplo C++ completo demonstrando o seu uso:

#include <string>
#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  string str1("Java");
  string str2("JAVA");

  if(str1.compare(str2) == 0){
    cout << str1 << " é igual a " << str2 << "\n";
  }
  else{
    cout << str1 << " é diferente de " << str2 << "\n";
  }

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Ao executar este código C++ nós teremos o seguinte resultado:

Java é diferente de JAVA


AutoCAD VBA ::: Dicas & Truques ::: Linha, Linhas, Comando LINE

Como retornar as coordenadas iniciais e finais de uma linha no AutoCAD usando AutoCAD VBA e as propriedades StartPoint e EndPoint

Quantidade de visualizações: 79 vezes
Nesta dica mostrarei como podemos usar as propriedades StartPoint e EndPoint do objeto AcadLine do AutoCAD VBA para obter e retornar as coordenadas iniciais e finais de uma linha do AutoCAD.

Veja que usamos a função ThisDrawing.Utility.GetEntity para pedir para o usuário selecionar uma linha na área de desenho. Uma vez selecionada a linha nós obtemos suas coordenadas iniciais e finais usando StartPoint e EndPoint.

Para finalizar nós usamos a função ThisDrawing.Utility.Prompt para exibir as coordenadas x, y e z iniciais e finais da linha na janela de comando do AutoCAD.

Veja o código AutoCAD VBA completo para o exemplo:

' Esta macro AutoCAD VBA mostra como selecionar uma linha
' na área de desenho do AutoCAD e retornar suas coordenadas
' iniciais e finais
Sub CoordenadasLinha()
  ' vamos declarar um variável para receber a linha
  ' selecionada
  Dim linha As AcadLine
  ' e também a localização da linha
  Dim localizacao As Variant
  ' para guardar o ponto inicial
  Dim ponto_inicial As Variant
  ' para guardar o ponto final
  Dim ponto_final As Variant
   
  ' caso haja algum erro
  On Error Resume Next
   
  ' agora pedimos para o usuário selecionar a linha
  ThisDrawing.Utility.GetEntity linha, localizacao, _
    "Selecione uma linha"
   
  ' vamos obter o ponto inicial da linha
  ponto_inicial = linha.StartPoint
  ' vamos obter o ponto final da linha
  ponto_final = linha.EndPoint
   
  ' e mostramos as coordenadas iniciais e finais da linha
  ThisDrawing.Utility.Prompt "As coordenadas iniciais são: X = " _
    & ponto_inicial(0) & "; Y = " & ponto_inicial(1) & "; Z = " _
    & ponto_inicial(2)
  ThisDrawing.Utility.Prompt vbCrLf & "As coordenadas finais são: X = " _
    & ponto_final(0) & "; Y = " & ponto_final(1) & "; Z = " _
    & ponto_final(2)
End Sub

Ao executar este código AutoCAD VBA nós teremos o seguinte resultado:

As coordenadas iniciais são: X = 55,9523227122882; Y = 42,9870898477564; Z = 0
As coordenadas finais são: X = 116,586068002574; Y = 20,6918609035664; Z = 0


HTML5 ::: Dicas & Truques ::: Meta Tags

HTML5 para iniciantes - Como usar a meta tag viewport para controlar o layout de suas páginas HTML

Quantidade de visualizações: 5076 vezes
Quando estamos aprendendo HTML5 e queremos desenvolver páginas web responsivas, ou design responsivo, uma das primeiras tags que temos que entender e dominar bem, é a tag viewport, incluinda com a especificação do HTML5.

Mas o que é a tag viewport? Esta meta tag foi originalmente apresentada no navegador Safari Mobile, e é usada para definir a largura e escala de apresentação do conteúdo da página HTML. Dessa forma, viewport é a área da página web na qual o conteúdo é exibido para o usuário.

Como sabemos, uma página web pode ser acessada por dispositivos variados. A tela do laptop é muito maior se comparada à tela de um smartphone ou tablet.

A meta tag viewport é adicionada na seção <head> da página HTML e pode conter os seguintes elementos:

width: É a largura do viewport virtual no dispositivo.

height: É a altura do viewport virtual do dispositivo.

initial-scale: É o nível de zoom quando a página é acessada.

maximum-scale: É o limite máximo de zoom que pode ser aplicado à página.

user-scalable: Uma flag que indica se o usuário pode ou não aplicar zoom à página. Os valores permitidos são yes ou no.

Veja, por exemplo, como definir um viewport de 980px e escala inicial de zoom de 1:

<meta name="viewport" content="width=980, initial-scale=1">

No entanto, se nossa intenção é desenvolver um design responsivo, devemos passar o valor device-width para o atributo width do viewport. Isso faz com que a largura do viewport seja igual à largura do dispositivo que está acessando a página.

Veja uma página HTML completa usando esta abordagem:

<html>
<head>
<title>Estudando HTML5</title>

<meta name="viewport" content="width=device-width, initial-scale=1">
 
</head>
<body>

<h1>Java Avançado - Como obter a largura e altura da tela 
do seu computador em pixels usando o método getScreenSize() 
da classe Toolkit do Java</h1>

<p>A classe Toolkit da linguagem Java nos fornece o 
método getScreenSize(), que retorna um objeto da 
classe Dimension contendo a largura e a altura da 
tela do nosso computador, em pixels.

Veja o código Java completo para o exemplo:</p>
 
</body>
</html>

Note que o elementos dentro do atributo content são separados por vírgulas, juntamente com seus valores individuais.


PHP ::: Fundamentos da Linguagem ::: Tipos de Dados

Apostila PHP - Como usar o tipo de dados string do PHP

Quantidade de visualizações: 10243 vezes
Strings são cadeias de caracteres, ou seja, palavras, frases e trechos de texto são considerados strings e usadas em praticamente todos os tipos de aplicações.

Em PHP, literais strings podem ser criados usandos aspas simples ou duplas. Veja:

$nome = 'Osmar J. Silva';  
$cidade = "Goiânia";

Variáveis são expandidas (avaliadas) dentro de aspas duplas. Dentro de aspas simples isso não acontece:

$nome = "Osmar J. Silva";
echo "Olá, $nome\n";
echo 'Olá, $nome';

O resultado da execução deste código será:

Olá, Osmar J. Silva
Olá, $nome

Aspas duplas suportam uma boa quantidade de strings de escape, como listado abaixo:

Símbolo        Significado         
------------------------------------------------------
  \"         Aspas duplas 
  \n         Nova linha (Newline) 
  \r         Retorno de linha (Carriege return)  
  \t         Tab (tabulação)
  \\         Barra invertida (Backslash)
  \$         Símbolo de Dollar
  \{         Chave esquerda
  \}         Chave direita 
  \[         Colchete esquerdo
  \]         Colchete direito  
\0 à \777    Caractere ASCII representado por um valor 
             octal
\x0 à \xFF   Caractere ASCII representado por um valor
             hexadecimal


Strings dentro de aspas simples reconhecem \\ para obter uma barra invertida e \' para obter uma aspas simples:

$caminho = 'C:\\WINDOWS\\SYSTEM';
$frase = 'Shes\'s here!';

Para testar se duas strings são iguais, o operador de comparação == pode ser usado:

if($a == $b){ 
  echo "As duas strings são iguais." 
}

Se quisermos saber se uma determinada variável é do tipo string, podemos usar a função is_string(). Veja:

<?
  $nome = 'Osmar J. Silva';  
  
  if(is_string($nome)){
    echo 'A variável $nome é do tipo string';
  }
?>



Ruby ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o cosseno de um ângulo em Ruby usando o método cos() da biblioteca Math - Calculadora de cosseno em Ruby

Quantidade de visualizações: 569 vezes
Em geral, quando falamos de cosseno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função cosseno disponível nas linguagens de programação para calcular o cosseno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria.

No entanto, é sempre importante entender o que é a função cosseno. Veja a seguinte imagem:



Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles.

Assim, o cosseno é a razão entre o cateto adjascente e a hipotenusa, ou seja, o cateto adjascente dividido pela hipotenusa. Veja a fórmula:

\[\text{Cosseno} = \frac{\text{Cateto adjascente}}{\text{Hipotenusa}} \]

Então, se dividirmos 30 por 36.056 (na figura eu arredondei) nós teremos 0.8320, que é a razão entre o cateto adjascente e a hipotenusa (em radianos).

Agora, experimente calcular o arco-cosseno de 0.8320. O resultado será 0.5881 (em radianos). Convertendo 0.5881 radianos para graus, nós obtemos 33.69º, que é exatamente o ângulo em graus entre o cateto adjascente e a hipotenusa na figura acima.

Pronto! Agora que já sabemos o que é cosseno na trigonometria, vamos entender mais sobre a função cos() da linguagem Ruby. Esta método, que faz parte da biblioteca Math, recebe um valor numérico e retorna um valor, também numérico) entre -1 até 1 (ambos inclusos). Veja:

puts "Cosseno de 0 = " + Math.cos(0).to_s
puts "Cosseno de 1 = " + Math.cos(1).to_s
puts "Cosseno de 2 = " + Math.cos(2).to_s

Ao executar este código Ruby nós teremos o seguinte resultado:

Cosseno de 0 = 1.0
Cosseno de 1 = 0.5403023058681398
Cosseno de 2 = -0.4161468365471424

Note que calculamos os cossenos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função cosseno mostrada abaixo:




Desafios, Exercícios e Algoritmos Resolvidos de Ruby

Veja mais Dicas e truques de Ruby

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby

Anúncio Patrocinado
Chat de Sexo - Site para adultso - Maiores de 18 anos. Converse com pessoas de todo o Brasil, de forma discreta e anônima


© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 16 usuários muito felizes estudando em nosso site.