Abaixo estao relacionados todos os casts possiveis na linguagem Java, mostrando a conversao de um valor para o outro. A indicacao Impl. quer dizer que aquele cast e implicito e automatico, ou seja, voce nao precisa indicar o cast explicitamente (lembrando que a variavel boolean nao pode ser convertido para nenhum outro tipo). PARA: byte short char int long float double DE: byte ---- impl. (char) impl. impl. impl. impl. short (byte) ---- (char) impl. impl. impl. impl. char (byte) (short) ---- impl. impl. impl. impl. int (byte) (short) (char) ---- impl. impl. impl. long (byte) (short) (char) (int) ---- impl. impl. float (byte) (short) (char) (int) (long) ---- impl. double (byte) (short) (char) (int) (long) (float) ---- String ou String Buffer? Qualusar? Isso vai depender do objetivo doseu algoritmo. Quando precisamos desenvolver algum metodo, que preciseconcatenar Strings (por exemplo), temos opcoes de usar a classe String ou aStringBuffer. No momento de desenvolver o metodo, voce deve decidir qual dasduas classes mais se adequa ao seu algoritmo entendendo as diferencas entreelas, e claro. Entao vamos as diferencas:Classe String: cria um objeto namemoria a cada concatenacao.Classe StringBuffer: criasomente um objeto na memoria e, a cada concatenacao, usa o objeto da memoria eadiciona a nova string aquele objeto String da memoria.Logo, se voce tiver um algoritmoque precise concatenar poucas strings, use a classe String. Caso contrario, usea StringBuffer. Abaixo alguns exemplos:public class TesteString {//DECLARACAO DOS ATRIBUTOS COMO PUBLICOS PARA USARNO EXEMPLO. NAO E A MELHOR PRATICA. USE-OS COMO PRIVADOS. public Integer id; public String nome; public Integer idade; 1) Exemplo de usoda classe String, concatenando apenas 3 variaveis. public StringtoString() { return id + " " + nome + " " + idade; } 2) Ja neste exemplo, foi usadaa classe String Buffer devido as possibilidades de filtro. public StringmonteStringSql(Integer id, String nome, Integer idade){ StringBuffer buffer = new StringBuffer(); buffer.append("SELECT * FROM ALUNO WHERE 1=1"); if (id != null ) buffer.append(" AND id = " + id.intValue()); if (nome != null) buffer.append(" AND nome = '" + nome + "'"); if (idade != null) buffer.append(" AND idade = " + idade.intValue()); buffer.append(" ORDER BY nome"); returnbuffer.toString(); } 3) Execucao de ambos os testes: public static void main(String[]args) { TesteString ts = new TesteString(); ts.id = 1; ts.nome = "classe string"; ts.idade = 30; System.out.println(":::: STRING::::"); System.out.println(ts.toString()); System.out.println(":::: STRING BUFFER::::"); System.out.println(ts.monteStringSql(null, null, null)); System.out.println(ts.monteStringSql(10,null, null)); System.out.println(ts.monteStringSql(10, "TESTE", null)); System.out.println(ts.monteStringSql(10, "TESTE", 35)); }}RESULTADO::::: STRING ::::1 classe string 30:::: STRING BUFFER ::::SELECT * FROM ALUNO WHERE 1=1 ORDER BY nomeSELECT * FROM ALUNO WHERE 1=1 AND id = 10 ORDER BY nomeSELECT * FROM ALUNO WHERE 1=1 AND id = 10 AND nome = 'TESTE' ORDERBY nomeSELECT * FROM ALUNO WHERE 1=1 AND id= 10 AND nome = 'TESTE' AND idade = 35 ORDER BY nomeOBSERVACAO: Note que o numero de atributos foi o mesmo, 3 em ambosos exemplos, porem o objetivo dos metodos foi diferente. No uso da classestring, apenas concatenei parametros da classe e, no segundo, a concatenacao vaiocorrer apenas se o parametro tiver valor. Esse sao exemplos classicos de usode ambas as classes.Leitor,