Você está aqui: Java ::: Dicas & Truques ::: Operadores de Manipulação de Bits (Bitwise Operators) |
Como usar o operador de deslocamento de bits para a esquerda (<<) da linguagem JavaQuantidade de visualizações: 8188 vezes |
O operador de deslocamento de bits para a esquerda (<<) da linguagem Java é usado quando precisamos mover um padrão de bits para a esquerda uma determinada quantidade de posições, preenchendo com zeros os bits de baixa ordem (bits mais à direita). Comece analizando o seguinte valor binário: a = 00000101 Este valor binário equivale ao valor 5 na base decimal. Se movermos este padrão duas posições para a esquerda, ou seja, aplicando a operação: b = a << 2 o resultado será: a = 00000101 b = 00010100 Note que o valor resultante será 20 na base decimal. Vamos ver isso em Java? Eis o código: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- public class Main { public static void main(String[] args) { int a = 5; // 00000101 // exibe o valor original (em inteiro e em bytes) System.out.println("a = " + obterBits(a) + " (" + a + ")"); // vamos mover o padrão de bits do primeiro valor 2 posições para // a esquerda int b = a << 2; // vamos mostrar o resultado System.out.println("b = " + obterBits(b) + " (" + b + ")"); } // método auxiliar que converte um inteiro em sua representação em bits public static String obterBits(int valor){ int mascara = 1 << 31; StringBuffer buffer = new StringBuffer(35); for(int i = 1; i <= 32; i++){ if((valor & mascara) == 0){ buffer.append('0'); } else{ buffer.append('1'); } valor <<= 1; if(i % 8 == 0){ buffer.append(' '); } } return buffer.toString(); } } Ao executarmos este código teremos o seguinte resultado: a = 00000000 00000000 00000000 00000101 (5) b = 00000000 00000000 00000000 00010100 (20) Cada troca à esquerda corresponde à multiplicação do valor por 2. Assim: 5 x 2 x 2 = 20. Se a operação fosse: b = a << 3 o resultado seria 00101000 (40), já que 5 x 2 x 2 x 2 = 40. É importante observar que o operador de deslocamento de bits para a esquerda (<<) só pode ser aplicado aos tipos int e long. Se fornecermos argumentos do tipo char, byte ou short, estes serão promovidos para o tipo int antes da operação. O número de posições para a troca dos bits sempre estará na faixa de 0 a 31 se o tipo for int e 0 a 63 se o tipo for long. |
Link para compartilhar na Internet ou com seus amigos: |
Java ::: Classes e Componentes ::: JTable |
Java Swing - Como alterar a cor de fundo dos títulos de uma JTable usando o método setBackground() da classe JTableHeaderQuantidade de visualizações: 40 vezes |
Nesta dica mostrarei como podemos chamar o método getTableHeader() da classe JTable para obter um objeto JTableHeader e usar seu método setBackground() para definir a cor de fundo dos títulos da tabela JTable. Veja o trecho de código a seguir: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- JTableHeader titulos = tabela.getTableHeader(); titulos.setBackground(Color.ORANGE); Note que "tabela" é uma referência a um objeto da classe JTable. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços |
Exercício Resolvido de Java - Faça um programa que sorteie um número aleatório entre 0 e 500 e pergunte ao usuário qual é o "número mágico". O programa deveráQuantidade de visualizações: 254 vezes |
Pergunta/Tarefa: Faça um programa que sorteie um número aleatório entre 0 e 500 e pergunte ao usuário qual é o "número mágico". O programa deverá indicar se a tentativa efetuada pelo usuário é maior ou menor que o número mágico e contar o número de tentativas. Quando o usuário conseguir acertar o número o programa deverá classificar o usuário como: De 1 a 3 tentativas: muito sortudo De 4 a 6 tentativas: sortudo De 7 a 10 tentativas: normal > 10 tentativas: tente novamente Sua saída deverá ser parecida com: Adivinhe o número mágico: 100 Tente um número menor. Adivinhe o número mágico: 50 Tente um número maior. Adivinhe o número mágico: 60 Tente um número maior. Adivinhe o número mágico: 80 Tente um número maior. Adivinhe o número mágico: 90 Tente um número maior. Adivinhe o número mágico: 95 Tente um número menor. Adivinhe o número mágico: 94 Tente um número menor. Adivinhe o número mágico: 93 Tente um número menor. Adivinhe o número mágico: 92 Você acertou o número em 9 tentativas. Classificação: Normal Veja a resolução comentada deste exercício usando Java: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.util.Random; import java.util.Scanner; public class Estudos { public static void main(String[] args) { // variáveis usadas na resolução do problema int numero_magico, palpite, tentativas = 0; boolean acertou = false; // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos sortear o número entre 0 e 500 Random rand = new Random(); numero_magico = rand.nextInt(501); // um laço que repete enquanto o usuário não // acertar o número mágico while (!acertou) { System.out.print("Adivinhe o número mágico: "); palpite = Integer.parseInt(entrada.nextLine()); // registra essa tentativa tentativas = tentativas + 1; // o usuário acertou o número mágico? if (palpite == numero_magico) { System.out.println("Você acertou o número em " + tentativas + " tentativas."); // mostra a classificação do usuário if (tentativas <= 3) { System.out.println("Classificação: Muito Sortudo"); } else if ((tentativas >= 4) && (tentativas <= 6)) { System.out.println("Classificação: Sortudo"); } else if ((tentativas >= 7) && (tentativas <= 10)) { System.out.println("Classificação: Normal"); } else { System.out.println("Classificação: Tente Novamente"); } // sai do laço acertou = true; } else { // indica se o palpite é maior ou menor if (palpite < numero_magico) { System.out.println("Tente um número maior.\n"); } else { System.out.println("Tente um número menor.\n"); } } } } } |
Java ::: Dicas & Truques ::: Programação Orientada a Objetos |
Como usar o modificador final em classes, variáveis e métodos Java - Programação Orientada a Objetos em JavaQuantidade de visualizações: 13388 vezes |
O modificador final pode ser usado com classes, variáveis e métodos. É claro que o significado varia dependendo do uso. Por exemplo, ao marcarmos uma variável com o modificador final, estamos na verdade criando uma constante, ou seja, uma variável cujo conteúdo não pode ser alterado durante a execução do programa. Veja:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- public class Estudos{ static final int VALOR = 45; public static void main(String args[]){ // vamos tentar alterar o valor da // constante VALOR = 10; } } Ao tentarmos compilar este programa teremos a seguinte mensagem de erro: Estudos.java:7: cannot assign a value to final variable VALOR VALOR = 10; ^ 1 error Tenha em mente, porém, que quando uma variável marcada como final é uma referência a um objeto, é a referência que não poderá ser alterada. As propriedades do objeto para a qual ela aponta poderão sofrer alterações, exceto se estes também estiverem marcados como final. Quando aplicado a classes, o modificador final garante que a classe não poderá ser extendida, ou seja, não é possível criar uma classe derivada a partir de uma classe marcada como final. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // superclasse final class Pessoa{ public String nome; } // subclasse class Aluno extends Pessoa{ public String matricula; } public class Estudos{ public static void main(String args[]){ // Cria um objeto da classe Aluno Aluno a = new Aluno(); } } Ao tentarmos compilar este código teremos a seguinte mensagem de erro: Estudos.java:7: cannot inherit from final Pessoa class Aluno extends Pessoa{ ^ 1 error Um método marcado como final não pode ser sobrescrito. Veja um exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // superclasse class Pessoa{ protected String nome; public final String getNome(){ return this.nome; } } // subclasse class Aluno extends Pessoa{ // estamos sobrescrevendo o método // herdado da superclasse public final String getNome(){ return "Aluno: " + this.nome; } } public class Estudos{ public static void main(String args[]){ // Cria um objeto da classe Aluno Aluno a = new Aluno(); } } Ao tentarmos compilar este código teremos a seguinte mensagem de erro: Estudos.java:14: getNome() in Aluno cannot override getNome() in Pessoa; overriden method is final public final String getNome(){ ^ 1 error Resumindo: variáveis marcadas com final não poder sofrer alterações. Classes marcadas como final não podem ter classes derivadas. Métodos marcados como final não podem ser sobrescritos. |
Vamos testar seus conhecimentos em |
Dimensionamento de pilares intermediários Uma das primeiras etapas ao desenvolver um projeto estrutural é a concepção estrutural. Nessa etapa, é necessário estimar a dimensão dos elementos estruturais e o pré-dimensionamento com base na NBR 6118/2014. O engenheiro Thiago foi convidado para pré-dimensionar um pilar intermediário de concreto armado. A seguir, os cuidados tomados por ele: I. O pilar intermediário foi calculado com base na força atuante centrada. II. No pilar intermediário, não foi calculado o momento de 2ª ordem. III. O pilar foi calculado como pilar de canto. Thiago procedeu corretamente em: A) I, apenas. B) I e II, apenas. C) II, apenas. D) I e III, apenas. E) II e III, apenas. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em JavaScript |
Qual é a forma correta de se invocar uma função JavaScript chamada "calcular"? A) call function calcular(); B) calcular(); C) def call calcular(); D) call calcular(); Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Python |
Qual das formas abaixo é válida para a criação de um DICIONÁRIO em Python? A) estados = ["SP": "SÃO PAULO", "GO": "GOIÁS"] B) estados = ("SP": "SÃO PAULO", "GO": "GOIÁS") C) estados = set("SP": "SÃO PAULO", "GO": "GOIÁS") D) estados = "SP": "SÃO PAULO", "GO": "GOIÁS" E) estados = {"SP": "SÃO PAULO", "GO": "GOIÁS"} Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira |
Estrutura e propriedade dos materiais A compreensão de muitas propriedades físicas dos materiais baseia-se no entendimento das forças existentes entre as moléculas. Em relação às ligações atômicas, assinale a alternativa correta. A) Cada ligação tem por objetivo fazer com que os átomos adquiram ligações metálicas. B) As ligações não costumam ocorrer concomitantemente em um mesmo material. C) Há três tipos de ligações diferentes: iônica, covalente e a força de Van der Waals. D) As ligações atômicas em alguns materiais podem ser puramente iônicas ou covalentes. E) A ligação metálica se dá por meio de uma aproximação muito intensa dos elementos. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em JavaScript |
A instrução default é obrigatória na construção switch...case...default do JavaScript? A) Sim B) Não Verificar Resposta Estudar Cards Todas as Questões |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software 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 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 |