<2020 04 19> O que prestar atenção ao mudar de C ++ para Java

  Recentemente, eu quero brincar com o desenvolvimento de aplicativos para Android e aprender Java da perspectiva do C ++. Pode-se dizer que Java é uma versão otimizada e compacta do C ++, que remove muitos recursos do C. subjacente Encontrei este artigo.
  
  -------------------------------------------------- -------------------------------------------------- -----------------------------------
  
  Escreva para programadores: O que prestar atenção ao mudar de C ++ para Java
  
  1 .Java executando o
  
  código-fonte Java em uma máquina virtual não é compilado no código de máquina comum. Em vez disso, é traduzido em código que a máquina virtual pode executar. Um intérprete Java eventualmente executa esse código. Que não está ligado ao processo; interpretação carregar dinamicamente as classes quando necessário;
  
  2.Java é totalmente orientada a objetos
  
  Java é uma linguagem totalmente orientada a objetos. Isso significa que as ações que você executa em qualquer objeto Java são implementadas por meio de um método O primeiro ponto é que não existe uma função principal isolada. Em vez disso, você deve começar a olhar para um programa, uma classe de objetos, da perspectiva de um objeto. Mas e esse objeto? A maioria dos programas Java simplesmente implementa o que é necessário herdando a classe base Java Object, mas você pode economizar tempo criando uma classe base de programa para vários aplicativos com características semelhantes.
  
  Regulamentos rigorosos orientados a objetos significam que o código C / C ++ original não pode ser usado sem modificação; o mesmo se aplica às chamadas do sistema. No C ++, você pode usar as chamadas originais do procedimento C, incluindo chamadas do sistema, declarando "C" externo fora do espaço de nomes normal do C ++.
  
  Em Java, existe apenas um método de retorno seguro semelhante, mas não é um método muito simples. Você deve definir um método local, cujo objetivo é fornecer uma interface para o idioma C e, em seguida, fornecer um meio de conexão. O ambiente Java fornece ferramentas para realizar essa tarefa, mas todo o processo e o fornecimento externo fornecidos em C ++ são insignificantes, e o processo de conclusão do uso de classes C ++ é mais complicado, porque apresentará problemas com interfaces C e funções C e funções-membro C ++. .
  
  Felizmente, muitas funções utilitárias de sistema comumente usadas foram fornecidas em métodos em classes de sistema, mas obviamente elas não incluem as classes e procedimentos que você criou ao longo dos anos. Portanto, você deve investigar quando precisar.
  
  3. Não há arquivo de cabeçalho separado
  
  em Java No Java, tudo sobre as classes é colocado em um arquivo separado. A localização de um método pode aparecer apenas em um local, e a implementação de um método deve ser realizada simultaneamente durante sua definição. A vantagem disso é que não é fácil falhar devido ao erro de não sincronização do arquivo ao implementar o programa ou obter uma instrução que não foi implementada. A declaração de classe pode ser usada pelo interpretador Java ou mesmo obtida a partir de uma unidade compilada; portanto, não há necessidade de ter arquivos de cabeçalho, desde que haja arquivos compilados.
  
  As desvantagens disso estão relacionadas ao nosso processo de programação. Muitos programadores de C ++ gostam de usar arquivos de cabeçalho em vez de documentos. Para ver os parâmetros de interface de uma função membro, basta olhar para a declaração no arquivo de cabeçalho. Você pode ver frequentemente o arquivo de cabeçalho para aprender como usar esta classe. Em Java, não existe esse resumo. Como o código que implementa o método de classe deve aparecer quando o método é definido e, para um único código de função, geralmente ocupa uma página inteira ou mais. Dessa maneira, é difícil obter um entendimento preliminar de como a classe é usada observando o código Java. Você deve preparar documentação suficiente para as aulas necessárias. Escusado será dizer que a documentação é extremamente escassa ao lidar com bibliotecas não comerciais.
  
  No ambiente Java atual, são fornecidas duas ferramentas para compensar isso: javap para imprimir o ID da classe e javadoc para fornecer documentos HTML para programas incorporados.
  
  4. Use Package para decompor o espaço para nome Java
  
  Um problema frequentemente encontrado em grandes projetos C ++ é o namespace - como garantir que alguns programadores do projeto não criem uma classe com o mesmo nome que outros programadores? Pior ainda, o fornecedor pode fornecer Uma biblioteca contendo classes com o mesmo nome que o seu. Existem várias maneiras de resolver esse problema, mas é provável que o projeto tenha sido iniciado antes que o problema seja descoberto.É preciso muito esforço para corrigir o erro.
  
  Java resolve esse problema através do conceito de "Pacote", e o Pacote efetivamente divide o espaço para nome coletando classes. Duas classes com o mesmo nome em pacotes diferentes ainda são diferentes. A questão principal torna-se se a classe é colocada no pacote correspondente.
  
  Lembre-se, Java não resolve o problema de conflitos de nomenclatura. Estender uma classe base causou conflitos em classes derivadas. Por exemplo, se seu fornecedor favorito fornece algumas classes e você as utiliza como classes base e deriva uma classe com um método foo, isso pode aparecer quando o fornecedor fornece uma nova versão da classe. Um método foo também é fornecido na nova classe.
  
  5. Exceções são um recurso importante do Java.
  
  No C ++, exceções e tratamento de exceções são coisas muito esotéricas; muitos programadores de C ++ nunca lidaram com elas ou nem sabem o que são. Exceções são erros inesperados que ocorrem durante o processo normal, portanto, não serão retornados do método ou passados ​​como parâmetros; no entanto, não podem ser ignorados! Um exemplo aqui é o método de calcular a raiz quadrada de um número . O formulário normal da interface é passar um número positivo como parâmetro para o método e, em seguida, o método retornará um número real positivo como resultado. O método pode verificá-los e gerar uma exceção quando ocorrer uma exceção. Na maioria dos sistemas, o programador não precisa fazer isso, para que uma exceção não considerada possa causar a saída anormal do programa.
  
  Em Java, as exceções se tornaram uma parte muito madura da linguagem. A descrição do método contém as informações da exceção e o processador do programa também impõe que, se você usar um método que pode gerar uma exceção, verifique se a exceção ocorreu. Quase todos os programadores Java encontrarão exceções, porque muitas classes em bibliotecas muito úteis lançam exceções. Lidar com exceções não é difícil, mas precisa de atenção em alguns casos. A documentação de um método indicará o tipo de exceção lançada pelo método. Se você esquecer, não importa, o compilador o lembrará.
  
  6. Uma string não é mais um
  
  objeto de matriz de caracteres que inclui uma string em Java e é uma constante. Strings não são como matrizes de caracteres, embora você possa simplesmente construir uma string a partir de uma matriz de caracteres. Você deve substituir as matrizes de caracteres por sequências, tanto quanto possível, porque elas não serão substituídas por operação incorreta.
  
  7. Java restringe objetos e métodos constantes.No
  
  C ++, você pode declarar formalmente um parâmetro de função ou valor de retorno da função como tipo const, o que pode efetivamente impedir modificações não autorizadas do parâmetro ou valor de retorno. Além disso, você pode declarar uma função de membro como const, indicando que ela não pode modificar nenhum objeto em que opera.
  
  Java suporta operadores constantes e variáveis ​​somente leitura, que são implementadas através da palavra-chave final. No entanto, Java não suporta forçar uma variável gravável a ser somente leitura durante a transferência e o retorno da função. Ou defina um método constante que não manipule e modifique o objeto.
  
  Em Java, o impacto dessa omissão é muito pequeno se comparado ao C ++, devido principalmente à diferença entre variáveis ​​de seqüência de caracteres e matrizes de caracteres, mas também traz um risco oculto de causar erros. Em particular, não há como testar se um método pode alterar um objeto.
  
  8. Java não tem ponteiros
  
  Compreender o conceito de ponteiros é o problema mais difícil para um programador de C ou C ++. Os ponteiros também são uma fonte de erros. Não há ponteiro em Java, o identificador do objeto é passado diretamente como parâmetro, em vez de passar um ponteiro. Além disso, você deve usar matrizes por índice. Estes não são grandes problemas. No entanto, a ausência de ponteiros causa muitos problemas ao escrever sistemas que contêm ponteiros de função ou ponteiros de função de membro. Esse problema é mais significativo ao lidar com funções de retorno de chamada.
  
  9. Java não possui tipos parametrizados Os tipos
  
  parametrizados fornecem uma maneira de processar muitos programas similares com um único programa. Um exemplo é o método da raiz quadrada, que pode operar em int ou float. No C ++, esse recurso é fornecido pelo modelo.
  
  O equivalente de modelos em C ++ não está incluído no Java. Se você costuma usar modelos para simplificar programas, como a construção de muitas funções que usam tipos de parâmetros semelhantes, isso é simplesmente um desastre. Isso significa que mais processos de copiar e colar são usados ​​para conclusão manual. No entanto, se você usar modelos para gerar classes, não há uma maneira fácil.
  
  10. Java usa coleta de lixo
  
  Na linguagem da coleta de lixo, o ambiente de tempo de execução sempre monitora qual memória não é usada. Quando um pedaço de memória não é usado, o sistema recupera automaticamente a memória. Por exemplo, um objeto é gerado em um método, mas não é chamado ou retornado ou armazenado como uma variável global e não pode ser usado fora do método. O próprio sistema saberá quais variáveis ​​você não usa e quais podem ser usadas. Portanto, você não precisa mais se preocupar em recuperar a memória para destruir objetos. No C ++, muito tempo de depuração é usado para verificar vazamentos de memória. Este método de Java reduz bastante a possibilidade de tais erros. Mas ele ainda não consegue lidar com os programas caóticos, eles não podem ser reciclados. Os destruidores em muitas classes C ++ são usados ​​para liberar memória referenciada por objetos. O fato de Java fazer coleta de lixo mostra que não é necessário gravar destruidores em Java. Mas isso não significa que você pode esquecer de escrever destruidores para suas aulas. Por exemplo, se um objeto abrir uma conexão de rede, ele deverá ser limpo corretamente para fechar a conexão. Em Java, o destruidor é chamado de método "finalização".
  
  11. Java não suporta herança múltipla
  
  Em qualquer sistema complexo orientado a objetos, é muito comum implementar uma nova classe com mais métodos. Por exemplo, uma classe de gerente precisa ser usada como um cabeçalho da tabela, mas um gerente deve ser um funcionário. Existem muitas maneiras de lidar com esses problemas. Um método é permitir a herança de várias classes. Neste exemplo, o gerente precisa herdar da lista vinculada e do funcionário.
  
  Java não tem herança múltipla. Mas você pode declarar uma interface - para descrever uma interface de programação que implementa algumas funções. Uma classe pode ser implementada por várias interfaces, incluindo sua única função. Classes diferentes podem ser implementadas pela mesma interface. Os parâmetros de um método podem ser declarados como uma classe ou como uma interface. Se for uma interface, a classe que implementa a interface pode ser passada para o método como um parâmetro.
  
  O conceito de uma interface é mais fácil de entender do que a herança múltipla, mas possui certas limitações. Em particular, você deve codificar para reimplementar a funcionalidade da classe ao implementar interfaces na classe.
  
  12. O Java suporta multithreading: o
  
  multithreading permite escrever programas que realizam várias tarefas ao mesmo tempo. Por exemplo, você pode permitir que o usuário edite a parte que foi lida antes de terminar de ler um arquivo grande. Você precisa dividir o programa em vários threads para executar. Por segurança. Seu programa deve ser cuidadosamente projetado, porque pode haver mais de um encadeamento que precisa acessar e modificar os dados.
  
  Java suporta multithreading desde o início. Classes e interfaces são usadas para decompor um programa em diferentes threads. O idioma simplesmente sincroniza ou bloqueia dados importantes.
  
  13. O
  
  Java é baseado em algumas classes predefinidas.O ambiente Java padrão inclui alguns pacotes implementados a partir das classes base do Java. Isso permite que você escreva rapidamente alguns programas úteis; esses pacotes são os seguintes:
  
  java.awt: Atualmente, muitos aplicativos dependem muito da GUI, o java fornece um Resumo da Janela de Ferramentas, que permite que você não considere a premissa de executar a plataforma Manipular objetos da GUI.
  
  java.applet: O principal objetivo do applet é fornecer conteúdo relacionado à navegação. Ele próprio é uma fonte de componentes awt e suporta alguns outros recursos, como som, renderização etc.
  
  java.io: java.io fornece operações de leitura e gravação para fluxos, arquivos e tubulações.
  
  java.lang: fornece as classes básicas de java Objcet, Integra, Float ......;
  
  java.net: fornece suporte para programação de rede. Incluindo soquete de processamento, URL, endereçamento da Internet, etc.
  
  java.util: um conjunto de ferramentas utilitárias gerais para estruturas de dados

Acho que você gosta

Origin www.cnblogs.com/zhenhua1618/p/12729837.html
Recomendado
Clasificación