1. Instalação e uso do myeclipse
* Eclipse: é uma ferramenta de desenvolvimento gratuita* Myeclipse: é um plug-in pago para quebrar o myeclipse, ** Requisitos de diretório de instalação: não pode haver chinês e espaços ** Após a conclusão da instalação, selecione um espaço de trabalho, que não pode ser usado para a manifestação*, que não se usa, mas a manifestação é que você use um tipo de myeclipse ** run, mas, antes de usar, o uso de um tipo de myeclipse ** run, mas que não se use, mas o uso da manutenção do uso de um tipo de myclipse ** use o myeclipse** Projeto Java Projeto Web Project- Selecione o JDK de dependência, você pode usar o JDK que vem com o myeclipse ou pode usar o JDK* instalado para criar um pacote de pacote- cn.itcast.test xx.xx.xx* Crie uma classe na classe de pacote- especificação de nome: ** A letra inicial deve ser capitalizada, para o exemplo, para o exemplo: exemplo para o exemplo: exemplo para o exemplo: o exemplo da letra de pacote: ** ** Valor de retorno;} - Método Nomeação de especificações Primeira letra minúscula Primeira letra, por exemplo: addNum ()* Definir variável - especificação de nomeação variável ** A letra inicial minúscula, a primeira letra da segunda palavra deve ser a upercase, como o uso de users -user que não usa o que não pode usar o pinyining chinês, que não se pode usar o miMornhuming **, que não se pode usar o pinyining chinês, que não se pode usar o pinyining chinês, que não se pode usar o que não pode usar o que não pode usar o que não é o que não pode usar o pinyining chinês. Nomeação: veja o nome e saiba o que significa * o código precisa ser recuado * Execute o programa executado como java ApplicationDebug como aplicativo Java
2. Modo de depuração de depuração (modo de depuração do ponto de interrupção)
* Using this mode, debug the program (see the changes in the data in the program) * The first step to use debug requires setting a breakpoint (let the program run stop on this line) - Show the line number - Double-click on the left, a dot appears, indicating that a breakpoint has been set * Use debug as method, run the program - prompt whether to enter the debug interface, yes- On the breakpoint, there is a green bar, indicating that the program stops on this line and does not run down * You can let the program execute down, - Use step over The shortcut key is F6 (single-step execution) - resume F8: indicates that the debugging is over, run directly down ** For example, there is a breakpoint after the current breakpoint, jump to the next breakpoint, ** If there is no breakpoint behind the current breakpoint, the program runs directly end * debug Another purpose ** View the program's source code** F5 step into: Enter the Método ** F7 Etapa Retorno: Retorno
3. Uso das teclas de atalho do myeclipse
* Código Prompt Alt /* Pacote de guia rápido Ctrl Shift O* Comentário de linha única Ctrl /* Remova a linha única Comentário Ctrl /* Comentário de várias linhas Ctrl Shift /* Remover Comentário de várias linhas Ctrl Shift /* Excluir linha Ctrl D
4. Uso de Junit
* Unit test* The test object is a method in a class* juint is not part of javase, I want to use the import jar package** However, the jar package with junit is brought in myeclipse* First of all, when junit version 3.x 4.x* unit test method, method naming rules public void method name() {}* Run the test method using annotation method, above the method** @Test: means that the method is unit tested--- @Testpublic void testadd1 () {testJunit test01 = new testjunit (); test01.testadd (2, 3);}-selecione o nome do método, clique com o botão direito do lado para executar execução de execução como o teste de falha, que é o teste de que o teste do método é o teste de que o teste do método-quando o teste de run e a barra de run e a barra de run e o teste de que é o teste, o teste de que é o teste, quando a barra de runos, quando a barra de que é o teste, que é o teste, que é o teste de que a barra de runos, que é o teste, que é o teste de que a barra e a barra de rio. Classe, execute como --- Teste Junit ** @ignore: significa que esse método não é testado na unidade ** @Bente: executando em cada método ** @after: executando após cada método ** assert.asserTequals ("Teste o valor esperado", "o valor real do método em execução") JDK5.0 NOVOS RECURSOS JDK 1.1 1.2 1.4 5.0** Parâmetros ** Reflexão5. Introdução aos genéricos
* Por que usar genéricos? - Geralmente usado em conjuntos ** Por exemplo, agora coloque um valor de tipo de string no conjunto. No momento, depois de colocar esse valor no conjunto, o tipo que perde sua capacidade pode ser apenas o tipo de objeto. No momento, por exemplo, se você deseja digitar esse valor, é fácil ter erros de conversão de tipo. How to solve this problem can be used to solve this problem using generics* How to use generics on sets - Commonly used set list set map- Generic syntax collection <String> For example, List<String>* is written as an object in a generic, and String cannot write basic data types, such as int (****)** Write basic data types corresponding to the wrapper class byte -- Byteshort -- Shortint -- Integerlong -- Longfloat -- Floatdouble - Doublechar - CaracterBoolean - Boolean* Três implementações do uso de listas genéricas na lista ArrayList LinkedList Code: @TestPublic void testList () {list <string> list = new ArrayList <bbB> (); list.add ("aaaa"); list.add ("bbb>); coleção.//ordinária para aprimoramento do iterador de loop para // Ordinário para loop para (int i = 0; i <list.size (); i ++) {string s = list.get(i);System.out.println(s);}System.out.println("============================================================================== ====================================================================== ====================================================================== ===================================================================== ====================================================================== ====================================================================== ====================================================================== Essas três diferenças * usam o código genérico no set: // genéricos usam definido no set @testpublic void testset () {set <tring> set = new HashSet <String> (); set.add ("www"); set.add ("qqq"); set.add ("zzz"); // set.add ("qqq"); set.add ("zzz"); aprimoramento para // use aprimoramento para o Traversal para (String S2: Set) {System.out.println (S2);} System.out.println ("============================================================================================================================================================================================================================================= =============================================================================================================================== =============================================================================================================================== ================================================================================================== = set.iterator (); while (it1.hasNext ()) {System.out.println (it1.next ());}}* Use a estrutura do mapa de genéricos no mapa: código de formulário Key-valu: // usando genéricos no mapa @testpublic void testMap () {Map, string> map = new Hashmap <string, (string) (string "; "111"); map.put ("bbb", "222"); map.put ("ccc", "333"); // mapa de transbiliação Existem várias maneiras de percorrer // 1. Obtenha todas as teclas e obtenha o valor do uso de chaves // 2. (Chave da String: Sets) {// Obtenha valueestring value = map.get (key); system.out.println (key+": "+value);}System.out.println("============================================================================= =========================================================================================================== =========================================================================================================== ============================================================================================================ {// Entrada é a relação entre key e value string keyv = entradas.getKey (); string valuev = entradas.getValue (); system.out.println (keyv+":"+valuev);}}6. Os genéricos são usados em métodos
* Defina uma matriz para implementar a troca de elementos da matriz na posição especificada* A lógica do método é a mesma, mas os tipos de dados são diferentes. No momento, use métodos genéricos* /** Use métodos genéricos para definir um tipo usando letras maiúsculas para representar t: isso t representa qualquer tipo* antes que o valor de retorno seja escrito <T>* ========= Defina um tipo. Este tipo é t* Aqui você pode usar esse tipo t***/public static <t> void swap1 (t [] arr, int a, int b) {t temp = arr [a]; arr [a] = arr [b]; arr [b] = temp;} ** trabalho 2: implementar um método genérico, aceitar qualquer prisão e reverter todos os elementos7. Uso de genéricos nas aulas (compreenda)
* Defina um tipo em uma classe, esse tipo pode ser usado diretamente na classe * public class TestDemo04 <T> {// Você pode usar o tipo t TAA na classe; public void test11 (t bb) {} // Escreva um genérico definido por um método estático na classe e você não pode mais usar o método estático público public estático <a> void test12 (a cc) {}}8. Introdução à enumeração
* O que é uma enumeração? ** Você precisa assumir um valor dentro de um determinado intervalo, e esse valor pode ser apenas um dos intervalos. ** Realistic scene: Traffic lights, there are three colors, but only one of the three colors can be bright at a time* Use one keyword enum** enum Color3 {RED,GREEN,YELLOW;}* The enum construction method is also private* The operation of special enum (understand)** There is a construction method in the enum class** There is a parameter in the construction method, and parameters need to be written on each instance** There is an abstract method in the enum class** Reescrever esse método abstrato em cada instância da enumeração9. A operação da API enumerada
** name (): retornar o nome do enum ** ordinal (): o subscrito da enumeração, o subscrito começa a partir de 0 ** valueof (classe <t> enumtype, nome da string): obtenha o objeto do enum **, existem outros dois métodos, que não estão na API, e dois métodos são gerados durante a compilação *** Exercício: Conversão entre objetos enum, subscrito de objeto enum e enum Nome do objeto Representação- // Conheça o objeto Enum, obtenha o nome enum e o subscrito @testpublic void test1 () {// obtenha o nome enum color100 c100 = color100.red; // enum name = c100.name (); // c100.ordinal (); system.out.println (nome+""+idx);}- // Saiba o nome da enumeração, obtenha o objeto e o subscrito da enumeração @testpublic void test2 () {string name1 = "verde"; // obtenha a cor100 c1 = color100.valueof (name1); c1.ordinal (); System.out.println (idx1);}- // Conheça o subscrito da enumeração, obtenha o objeto e o nome da enumeração @testpublic void test3 () {int idx2 = 2; // obtenha o objeto de enumeração de cor100 [] cs = color100.values (); cs [idx2]; // Obtenha o nome da enumeração Nome da string = c12.name (); System.out.println (nome);}10. Importação estática (compreenda)
* Você pode usar diretamente o método de importação estática no código para importar métodos estáticos ou constantes* importar estático xx.xx.xxx* importar java estático.lang.system.out; importar java estático.util.arrays.sort; ** Por exemplo, agora implementa um calculador na classe matemática
11. Depatação e montagem automáticas
* Caixa ** Converta o tipo de dados básico para a classe de embalagem* Unboxing ** Converta a classe de embalagem para o tipo de dados básico ** // Inteiro AutoBox i = 10; // Autobox int m = i; ** Como caixa e unbox em jdk1.4 - // autobox em JDK1.4 Public Void Test1 () { // unbox int a = M.IntValue ();} ** JDK é compatível com versões anteriores - por exemplo, o código escrito em JDK1.4 também pode ser executado em 5.0 ** Exercício: Compatível para trás == O resultado da execução é chamar Dosomething (Double M) == Primeiro de tudo, esse método deve ser chamado em JDK1.4. If the following method is called, type conversion is required, but jdk1.4 cannot realize automatic unboxing == Since jdk is backward compatible, if this method is called in jdk1.4, this method will still be called in jdk5.0 public static void main(String[] args) {doSomething(10);} public static void doSomething(double m) {System.out.println ("Double ...");} public static void Dosomething (Inteiro A) {System.out.println ("Inteiro ...12. aprimorado para loop (*****)
* Sintaxe para (o valor atravessado: o conjunto a ser atravessado) {}- para (string s: list) {System.out.println (s);}* cenários de uso: Array; Os conjuntos que implementam a interface iterável podem usar o loop aprimorado para o loop* use o aprimorado para o loop para atravessar a lista definida no conjunto, a interface do iterador é implementada, para que o aprimorado para loop possa ser usado e a interface do iterador não pode ser implementada, para que o aprimorado para loop não possa ser usado. A interface do iterador não pode ser implementada; portanto, o loop aprimorado não pode ser usado. O objetivo do aprimoramento para o loop aparece: substituir o iterador ** A camada subjacente do aprimoramento para é implementada pelo iterador13. Suplemento de conteúdo
(1) Apagação genérica* Antes de tudo, os genéricos aparecem apenas no estágio do código -fonte. Quando compilado, os genéricos não existem mais (2) exercícios: implemente um método genérico, aceitam matrizes de qualquer tipo e revertem todos os códigos de elementos na matriz public static <t> void reverte (t [] ARR1) {/** IDEA BÁSICA: Troque o primeiro elemento com o último elemento e troque o segundo elemento penultimado. . . . *Comprimento da troca/2**/// transweep a matriz para (int i = 0; i <arr1.length/2; i ++) {/*int temp = arr1 [0]; arr1 [0] = arr1 [arr1.Length-1];*/t temp = arr1 [ir1]; arr1 [i) = 1 [1.Lengthngthngthden]; temp;}}14. Parâmetros variáveis
* Em que cenário pode ser aplicado parâmetros variáveis: ** Implementar a adição de dois números e implementar a adição de três números e quatro números- se vários métodos forem implementados, a lógica nesses métodos é basicamente a mesma. A única diferença é o número de parâmetros passados. Você pode usar parâmetros variáveis* Método de definição de parâmetros variáveis Tipo de dados ... O nome da matriz* é entendido como uma matriz, que armazena os parâmetros passados Cods public static void add1 (int ... nums) {// NUMS é entendido como uma matriz, que armazena os parâmetros passados // system.out.printlnnn (nums.l) i = 0; i <nums.Length; i ++) {sum+= nums [i];} system.out.println (sum);}* Nota (1) Os parâmetros variáveis precisam ser escritos na lista de parâmetros do método e não pode ser definido separadamente (2), pode haver uma variável na lista de parâmetros do método (3) na variável (3), que pode ser definido na lista de parâmetros na lista de parâmetros do método (3), que não pode ser definido na lista de parâmetros na lista de parâmetros do método (3) na lista de parâmetros na lista dos parâmetros da método (3), pode ser definida na lista de parâmetros da lista dos parâmetros do método (3) na lista de parâmetros do método (3) na lista de parâmetros na lista dos parâmetros do método. Parâmetro - Add1 (int a, int ... nums)15. O princípio da reflexão (************)
* Applied in some codes with higher versatility* Most of the frameworks learned later are implemented using reflection* In framework development, they are developed based on configuration file** In configuration file, all contents in the class can be obtained through reflection, and a method in the class can be used to execute * All contents in the class: attributes, constructors without parameters, constructors with parameters, ordinary methods* The principle of drawing and analyzing Reflexão* Primeiro, você precisa salvar o arquivo java no disco rígido local.java* compilar o arquivo java e se tornar o arquivo .class* Use JVM para carregar o arquivo de classe na memória através da classe Load* Everything é um objeto, e o arquivo de classe é representado pela classe Classe na memória* ao usar a reflexão, você precisa primeiro obter a classe. Depois de obter esta classe, você pode obter todo o conteúdo do arquivo de classe - incluindo construtores de atributos, métodos comuns* atributos são arquivados* construtor* construtor* O método normal passa por um método de classe
16. Use o método de construção sem parâmetros na classe de operação de reflexão (** escreverá **)
* Primeiro, obtenha a aula - // obtenha a classe de aula de classe clazz1 = pessoa.class; classe clazz2 = new pessoa (). GetClass (); classe clazz3 = classe.ForName ("cn.itcast.test09.Person");* por exemplo: para instantar uma classe, você pode novo, mas não usa o novo "); - // Get ClassClass C3 = Class.ForName ("cn.itcast.test09.Person"); // Obtenha a instância da pessoa da pessoa Pessoa P = (Pessoa) C3.NewInstance ();* Code // opera o construtor sem parâmetros @testpublic void test1 () Class.ForName ("CN.ITCAST.TEST09.PERSON"); // Obtenha a instância da classe Pessoa Pessoa P = (Person) C3.NewInstance (); // Defina o valor P.SetName ("Zhangsan");17. Use a operação de reflexão para ter o método de construção de parâmetros (** escreverá **)
// opera o construtor com parâmetros @testpublic void test2 () lança exceção {// get classClass c1 = class.ForName ("cn.itcast.test09.person"); // use o construtor com parâmetros // c1.getconstructors (); uma aula. Cs = c1.getConstructor (string.class, string.class); // Defina o valor através do construtor com parâmetros // Crie a instância da pessoa através do construtor com parâmetros Pessoa P1 = (Person) Cs.NewInstance ("Lisi", "100"); System.out.Println (P1.Id () () "" 100);18. Use propriedades de operação de reflexão (** escreverá **)
* // opera o atributo de nome @testpublic void test3 () {try {// get class Class c2 = class.ForName ("cn.itcast.test09.person"); // obtenha o atributo // c2.getDecLaredfields (); // indica para obter todos os atributos // obtenha a pessoa da pessoa da pessoa p11; Esse método, o parâmetro é o nome do campo de atributo F1 = C2.GetDecaredField ("Nome"); // A operação é uma propriedade privada e a operação não é permitida. Você precisa definir a propriedade privada SetAccessible (true), que pode operar o Propriedade Privada F1.setAccessible (true); // Defina o método do conjunto de valor de nome, dois parâmetros: a primeira instância do parâmetro e o segundo parâmetro é o valor definido F1.set (P11, "Wangwu"); // equivalente a p.name = "wangwu"; system.out.println (f1.get (p11)); // equivalente a p.name} catch (Exceção e) {e.printStacktrace ();}}19. Use métodos de operação genérica (** pode escrever **)
* Use a classe do método para representar métodos ordinários* Code // Opere métodos ordinários, como o SetName Operatário@TestPublic void test4 () lança exceção {// Get Class Class C4 = Class.Forname ("CN.itcast.test09.Person"); // Obter a pessoa Pessoa P4 = (Person) C4.NewInSance (); método // c4.getDecLaredMethods (); // Obtenha todos os métodos comuns // transfira dois parâmetros: o primeiro parâmetro, o nome do método; O segundo parâmetro, o tipo do parâmetro no método do método m1 = c4.getDecLaredMethod ("setName", string.class); // Deixe o método setName executar, executar o valor definido // use Invoke (p4, "niUQi"); Passe dois parâmetros: o primeiro parâmetro, a pessoa da pessoa; O segundo parâmetro, Definir valor // Após a execução do método Invoke, é equivalente a executar o método setName e, ao mesmo tempo, um valor é definido como NIUQIM1.inVoke (P4, "niuqi"); System.out.println (p4.getName ());}* // O método privado da operação precisa ser definido como true* //m1.setAccessible(True) ;* Quando o método de operação é um método estático, porque o método estático é chamado de nome de classe. Nome do método, nenhuma instância da classe é necessária* Ao usar a reflexão para operar o método estático, nenhuma instância é necessária* no primeiro parâmetro do método Invokie, escreva nulo m1.invoke (null, "niUqi");O exposto acima é a edição Java Basic Enhanced do tutorial Java Web Basic introduzido pelo editor. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!