array é um tipo primitivo do js ou um objeto?
<p>array seria um objeto que implementa a interface arrays.</p>
<p>lembrando que os primitivos são:</p>
<p>boolean
null
undefined
number
string
symbol (novo no ecmascript 6)</p>
<p>objetos no javascript tem características de arrays asociativos.</p>
<p>aqui explica melhor sobre os arrays:</p>
<pre class="prettyprint"><code>https://www.devmedia.com.br/javascript-arrays/4079</code></pre>
<p>as primitivas definidas localmente estariam na pilha. no entanto, se uma primitiva fosse definida como parte de uma instância de um objeto, essa primitiva estaria na pilha.</p><pre><code>public class test { private static class heapclass { public int y; // when an instance of heapclass is allocated, this will be on the heap. } public static void main(string[] args) { int x=1; // this is on the stack. } } </code></pre><p>com relação à atualização:</p><p>os objetos não têm sua própria pilha. no meu exemplo, <code>int y</code> realmente faria parte de cada instância de <code>heapclass</code>. sempre que uma instância do heapclass é alocada (por exemplo, <code>new test.heapclass()</code>), todas as variáveis ​​de membro do heapclass são adicionadas ao heap. portanto, como instâncias de <code>heapclass</code> estão sendo alocadas no heap, <code>int y</code> estaria no heap como parte de uma instância de <code>heapclass</code>.</p><p>no entanto, todas as variáveis ​​primitivas declaradas no corpo de qualquer método seriam <strong><em> na pilha </em></strong>.</p><p>como você pode ver no exemplo acima, <code>int x</code> está na pilha porque é declarado no corpo de um método - não como membro de uma classe.</p> colocando de uma forma mais simples.é uma especie de layout pré definido para seu site ou aplicação webele possui configurações de css, jquery entre outrosonde você pode criar menus/formularios/bot... <p>a idéia aqui é que a maioria de nós já <em> já </em> saiba <em> a maioria </em> do que está nesta lista. mas pode haver apenas um ou dois itens que você realmente não analisou antes, que não entende completamente, ou talvez nunca tenha ouvido falar.</p><p><strong> interface e experiência do usuário </strong></p><ul> <li>esteja ciente de que os navegadores implementam os padrões de maneira inconsistente e verifique se o site funciona razoavelmente bem em todos os principais navegadores. em um teste mínimo com relação a um <a href="https://en.wikipedia.org/wiki/gecko\_%28layout\_engine%29">gecko</a> engine recente ( <a href="http://firefox.com/">firefox</a> ), um mecanismo webkit ( <a href="http://www.apple.com/safari/">safari</a> e alguns navegadores móveis) , <a href="http://www.google.com/chrome">chrome</a> , seus navegadores <a href="https://en.wikipedia.org/wiki/internet\_explorer">ie suportados</a> (aproveite as <a href="http://www.microsoft.com/downloads/details.aspx?familyid=21eabb90-958f-4b64-b5f1-73d0a413c8ef&amp;displaylang=en">imagens vpc de compatibilidade de aplicativos</a> ) e <a href="http://www.opera.com/">opera</a> . considere também como <a href="http://www.browsershots.org">browsers processam seu site</a> / em diferentes sistemas operacionais.</li> <li>considere como as pessoas podem usar o site que não seja dos principais navegadores: telefones celulares, leitores de tela e mecanismos de pesquisa, por exemplo. - algumas informações de acessibilidade: <a href="http://www.w3.org/wai/"> wai </a> e <a href="http://www.section508.gov/">section508</a> , desenvolvimento móvel: <a href="http://mobiforge.com/">mobiforge</a> .</li> <li>preparo: como implantar atualizações sem afetar seus usuários. tenha um ou mais ambientes de teste ou teste disponíveis para implementar alterações na arquitetura, no código ou no conteúdo abrangente e garantir que eles possam ser implantados de maneira controlada sem quebrar nada. tenha uma maneira automatizada de implantar alterações aprovadas no site ativo. isso é implementado de maneira mais eficaz em conjunto com o uso de um sistema de controle de versão (git, subversion, etc.) e um mecanismo de compilação automatizado (ant, nant, etc.).</li> <li>não exiba erros hostis diretamente para o usuário.</li> <li>não coloque os endereços de email dos usuários em texto sem formatação, pois eles receberão spam até a morte.</li> <li>adicione o atributo \_<code>rel="nofollow"</code>\_ aos links gerados pelo usuário <a href="https://en.wikipedia.org/wiki/nofollow">para evitar spam</a> .</li> <li> <a href="http://www.codinghorror.com/blog/archives/001228.html">crie limites bem considerados no seu site</a> - isso também pertence a segurança.</li> <li>aprenda a fazer <a href="https://en.wikipedia.org/wiki/progressive\_enhancement">aprimoramento progressivo</a> .</li> <li> <a href="https://en.wikipedia.org/wiki/post/redirect/get">redirecione após um post</a> se esse post foi bem-sucedido, para impedir que uma atualização seja enviada novamente.</li> <li>não se esqueça de levar em consideração a acessibilidade. é sempre uma boa ideia e, em determinadas circunstâncias, é um <a href="http://www.section508.gov/">requisito legal</a> . <a href="http://www.w3.org/wai/intro/aria">wai-aria</a> e <a href="http://www.w3.org/tr/wcag20/">wcag 2</a> são bons recursos nessa área.</li> <li>leia <a href="http://www.sensible.com/dmmt.html">não me faça pensar</a> .</li> </ul><p><strong> segurança </strong></p><ul> <li>é muito difícil de digerir, mas o guia de desenvolvimento <a href="http://www.owasp.org/index.php/category:owasp\_guide\_project">owasp</a> cobre a segurança do site de cima para baixo.</li> <li>saiba mais sobre a injeção, especialmente <a href="https://en.wikipedia.org/wiki/sql\_injection">sql injection</a> e como evitá-la.</li> <li>nunca confie na entrada do usuário, nem em qualquer outra coisa que esteja presente na solicitação (que inclui cookies e valores ocultos do campo do formulário!).</li> <li>hash senhas usando <a href="https://security.stackexchange.com/q/21263/396">salt</a> / e use sais diferentes para suas linhas para evitar ataques do rainbow. use um algoritmo de hash lento, como bcrypt (tempo testado) ou scrypt (ainda mais forte, mas mais recente) ( <a href="http://www.tarsnap.com/scrypt.html">1</a> , <a href="http://it.slashdot.org/comments.pl?sid=1987632&amp;cid=35149842">2</a> ), para armazenar senhas. ( <a href="http://codahale.com/how-to-safely-store-a-password/">como armazenar com segurança uma senha</a> ). o <a href="https://security.stackexchange.com/q/7689/396">nist também aprova o pbkdf2 para senhas de hash</a> "e é <a href="https://security.stackexchange.com/a/2136/396">fips aprovado no .net</a> (mais informações <a href="https://security.stackexchange.com/questions/211/how-to-securely-hash-passwords">aqui</a> ) . <em> evite </em> usar md5 ou a família sha diretamente.</li> <li> <a href="https://stackoverflow.com/questions/1581610/how-can-i-store-my-users-passwords-safely/1581919#1581919">não tente criar seu próprio sistema de autenticação sofisticado</a> . é uma coisa tão fácil cometer erros de maneiras sutis e não testáveis ​​e você nem saberia até <em> depois de </em> ser invadido.</li> <li>conheça as <a href="https://www.pcisecuritystandards.org/">regras para o processamento de cartões de crédito</a> . ( <a href="https://stackoverflow.com/questions/51094/payment-processors-what-do-i-need-to-know-if-i-want-to-accept-credit-cards-on-m">veja também esta pergunta</a> )</li> <li>use <a href="http://www.mozilla.org/projects/security/pki/nss/ssl/draft302.txt">ssl/tls</a> / <a href="https://en.wikipedia.org/wiki/session\_hijacking#prevention"> https </a> para sites em que dados confidenciais são inseridos (como credenciais, informações de identificação pessoal, informações do cartão de crédito). <a href="https://letsencrypt.org">let's encrypt</a> é uma autoridade de certificação gratuita que pode ajudar.</li> <li> <a href="https://en.wikipedia.org/wiki/session\_hijacking#prevention">impedir o seqüestro de sessão</a> .</li> <li>evite <a href="https://en.wikipedia.org/wiki/cross-site\_scripting">scripts entre sites</a> (xss).</li> <li>evite <a href="https://en.wikipedia.org/wiki/cross-site\_request\_forgery">falsificações de solicitação entre sites</a> (csrf).</li> <li>evite <a href="https://en.wikipedia.org/wiki/clickjacking">clickjacking</a> .</li> <li>mantenha seu (s) sistema (s) atualizado (s) com as últimas correções.</li> <li>verifique se as informações de conexão do banco de dados estão protegidas.</li> <li>mantenha-se informado sobre as mais recentes técnicas de ataque e vulnerabilidades que afetam sua plataforma.</li> <li>leia <a href="https://code.google.com/archive/p/browsersec/">manual de segurança do navegador google</a> .</li> <li>leia <a href="https://rads.stackoverflow.com/amzn/click/com/0470170778">manual do hacker de aplicativos da web</a> .</li> <li>considere <a href="https://en.wikipedia.org/wiki/principle\_of\_least\_privilege">o princípio do menor privilégio</a> . tente executar o servidor de aplicativos <a href="https://security.stackexchange.com/questions/47576/do-simple-linux-servers-really-need-a-non-root-user-for-security-reasons">como não raiz</a> . ( <a href="http://tomcat.apache.org/tomcat-8.0-doc/security-howto.html#non-tomcat\_settings">exemplo do tomcat</a> )</li> <li>coloque \_<code>rel="noopener noreferrer"</code>\_ em todos os links fornecidos pelo usuário com \_<code>target="\_blank"</code>\_ para impedir que o javascript na página de destino redirecione sua página para outro lugar, como uma página de login falsa. <a href="https://dev.to/phishing">mais informações</a> </li> <li>considere usar uma <a href="https://csp.withgoogle.com/docs/index.html">política de segurança de conteúdo estrita</a> .</li> </ul><p><strong> desempenho </strong></p><ul> <li>implemente o cache, se necessário, entenda e use <a href="http://www.mnot.net/cache\_docs/">http caching</a> corretamente, bem como <a href="http://www.w3.org/tr/2011/wd-html5-20110525/offline.html">html5 manifest</a> .</li> <li>otimizar imagens - não use uma imagem de 20 kb para um fundo repetitivo.</li> <li>compactar conteúdo para velocidade, consulte <a href="https://www.smashingmagazine.com/2016/10/next-generation-server-compression-with-brotli/">brotli</a> , <a href="http://developer.yahoo.com/performance/rules.html#gzip">gzip/deflate</a> (<strike> <a href="https://stackoverflow.com/questions/1574168/gzip-vs-deflate-zlib-revisited">deflate é melhor</a> </strike>).</li> <li>combine/concatene várias folhas de estilo ou vários arquivos de script para reduzir o número de conexões do navegador e melhorar a capacidade do gzip para compactar duplicações entre arquivos.</li> <li>dê uma olhada no site <a href="http://developer.yahoo.com/performance/">yahoo exceptional performance</a> , muitas ótimas diretrizes, incluindo a melhoria do desempenho do front-end e sua <a href="http://developer.yahoo.com/yslow/">yslow</a> ferramenta (requer firefox, safari, chrome ou opera). além disso, <a href="https://developers.google.com/speed/docs/best-practices/rules\_intro">velocidade da página do google</a> (use com <a href="https://developers.google.com/speed/pagespeed/insights\_extensions">extensão do navegador</a> ) é outra ferramenta para criação de perfil de desempenho e otimiza suas imagens também.</li> <li><strike>use <a href="http://alistapart.com/articles/sprites">css image sprites</a> para imagens relacionadas pequenas, como barras de ferramentas (consulte o ponto "minimizar solicitações http")</strike></li> <li>use <a href="https://24ways.org/2014/an-overview-of-svg-sprite-creation-techniques/">sprites de imagem svg</a> para pequenas imagens relacionadas, como barras de ferramentas. a coloração svg é um pouco complicada. você pode ler sobre isso <a href="http://tympanus.net/codrops/2015/07/16/styling-svg-use-content-css/">aqui</a> .</li> <li>sites ocupados devem considerar <a href="http://developer.yahoo.com/performance/rules.html#split">dividir componentes entre domínios</a> . especificamente...</li> <li>o conteúdo estático (ou seja, imagens, css, javascript e, geralmente, o conteúdo que não precisa de acesso a cookies) deve ir em um domínio separado <em> <a href="http://blog.stackoverflow.com/2009/08/a-few-speed-improvements/">que não usa cookies</a> </em>, porque todos os cookies de um domínio e seus subdomínios são enviados com todas as solicitações para o domínio e seus subdomínios. uma boa opção aqui é usar uma rede de entrega de conteúdo (cdn), mas considere o caso em que essa cdn pode falhar incluindo cdns alternativas ou cópias locais que podem ser veiculadas.</li> <li>minimize o número total de solicitações http necessárias para um navegador renderizar a página.</li> <li>escolha um <a href="http://garann.github.io/template-chooser/">template engine</a> e renderize/pré-compile usando os executores de tarefas como gulp ou grunt</li> <li>verifique se há um arquivo \_<code>favicon.ico</code>\_ na raiz do site, ou seja, \_<code>/favicon.ico</code>\_. <a href="http://mathiasbynens.be/notes/rel-shortcut-icon">os navegadores solicitarão automaticamente</a> , mesmo que o ícone não seja mencionado no html. se você não tiver um \_<code>/favicon.ico</code>\_, isso resultará em muitos 404s, consumindo a largura de banda do servidor.</li> </ul><p><strong> seo (otimização de mecanismos de pesquisa) </strong></p><ul> <li>use urls "compatíveis com o mecanismo de pesquisa", ou seja, use \_<code>example.com/pages/45-article-title</code>\_ em vez de \_<code>example.com/index.php?page=45</code>\_</li> <li>ao usar \_<code>#</code>\_ para conteúdo dinâmico, altere \_<code>#</code>\_ para \_<code>#!</code>\_ e, em seguida, no servidor \_<code>$\_request["\_escaped\_fragment\_"]</code>\_, é o que o googlebot usa em vez de \_<code>#!</code>\_. em outras palavras, \_<code>./#!page=1</code>\_ se torna \_<code>./?\_escaped\_fragments\_=page=1</code>\_. além disso, para usuários que possam estar usando o ff.b4 ou o chromium, <code>history.pushstate({"foo":"bar"}, "about", "./?page=1");</code> é um ótimo comando. portanto, mesmo que a barra de endereço tenha mudado, a página não é recarregada. isso permite que você use \_<code>?</code>\_ em vez de \_<code>#!</code>\_ para manter o conteúdo dinâmico e também informar ao servidor quando você enviar por e-mail o link que estamos após esta página, e o ajax não precisa para fazer outro pedido extra.</li> <li>não use links que digam <a href="https://ux.stackexchange.com/questions/12100/why-shouldnt-we-use-the-word-here-in-a-textlink">"clique aqui"</a> . você está desperdiçando uma oportunidade de seo e isso torna as coisas mais difíceis para as pessoas com leitores de tela.</li> <li>tenha um <a href="http://www.sitemaps.org/">xml sitemap</a> , de preferência no local padrão \_<code>/sitemap.xml</code>\_.</li> <li>use <a href="http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html">\_<code>&lt;link rel="canonical" ... /&gt;</code>\_</a> quando você tiver vários urls que apontam para o mesmo conteúdo, esse problema também pode ser solucionado em <a href="http://www.google.com/webmasters/">ferramentas do google para webmasters</a> .</li> <li>use <a href="http://www.google.com/webmasters/">ferramentas para webmasters do google</a> e <a href="http://www.bing.com/toolbox/webmaster">ferramentas para webmasters do bing</a> .</li> <li>instale <a href="http://www.google.com/analytics/">google analytics</a> logo no início (ou uma ferramenta de análise de código aberto como <a href="http://piwik.org/">piwik</a> /).</li> <li>saiba como <a href="https://en.wikipedia.org/wiki/robots\_exclusion\_standard">robots.txt</a> e as aranhas dos mecanismos de pesquisa funcionam.</li> <li>redirecione solicitações (usando \_<code>301 moved permanently</code>\_) solicitando \_<code>www.example.com</code>\_ para \_<code>example.com</code>\_ (ou o contrário) para impedir a divisão da classificação do google entre os dois sites.</li> <li>saiba que pode haver aranhas mal comportadas por aí.</li> <li>se você tiver conteúdo não textual, procure as extensões de mapa do site do google para vídeos, etc. há algumas informações boas sobre isso em <a href="https://stackoverflow.com/questions/72394/what-should-a-developer-know-before-building-a-public-web-site#167608">tim farley's answer</a> .</li> </ul><p><strong> tecnologia </strong></p><ul> <li>entenda <a href="http://www.ietf.org/rfc/rfc2616.txt"> http </a> e coisas como get, post, sessões, cookies e o que significa ser "sem estado".</li> <li>escreva seu <a href="http://www.w3.org/tr/xhtml1/"> xhtml </a> / <a href="http://www.w3.org/tr/rec-html40/"> html </a> e <a href="http://www.w3.org/tr/css2/"> css </a> de acordo com as especificações <a href="http://www.w3.org/tr/">w3c</a> e certifique-se de que eles <a href="http://validator.w3.org/">validam</a> /. o objetivo aqui é evitar os modos peculiares do navegador e, como bônus, facilitar o trabalho com navegadores não tradicionais, como leitores de tela e dispositivos móveis.</li> <li>entenda como o javascript é processado no navegador.</li> <li>entenda como o javascript, as folhas de estilo e outros recursos usados ​​por sua página são carregados e considere seu impacto no <em> desempenho percebido </em>. agora, é amplamente considerado adequado <a href="https://developer.yahoo.com/blogs/ydn/high-performance-sites-rule-6-move-scripts-bottom-7200.html">mover scripts para o final das páginas</a> das suas páginas, com exceções que normalmente são coisas como aplicativos de análise ou shims html5.</li> <li>entenda como a sandbox javascript funciona, especialmente se você pretende usar iframes.</li> <li>esteja ciente de que o javascript pode e será desativado e que ajax é, portanto, uma extensão, não uma linha de base. mesmo que a maioria dos usuários o deixe ligado agora, lembre-se de que <a href="http://noscript.net/">noscript</a> está se tornando mais popular. embora os robôs de rastreamento modernos suportem a indexação de conteúdo gerado por javascript, considere usar a renderização no servidor para outros robôs ou usuários que desativaram o javascript.</li> <li>aprenda a diferença <a href="http://www.bigoakinc.com/blog/when-to-use-a-301-vs-302-redirect/">entre os redirecionamentos 301 e 302</a> (esse também é um problema de seo).</li> <li>aprenda o máximo possível sobre sua plataforma de implantação.</li> <li>considere usar uma <a href="https://stackoverflow.com/questions/11578819/css-reset-what-exactly-does-it-do">redefinir folha de estilos</a> ou <a href="http://necolas.github.com/normalize.css/">normalize.css</a> .</li> <li>considere estruturas javascript (como <a href="http://jquery.com/">jquery</a> , <a href="http://mootools.net/">mootools</a> , <a href="http://www.prototypejs.org/">prototype</a> , <a href="http://dojotoolkit.org">dojo</a> ou <a href="http://developer.yahoo.com/yui/3/">yui 3</a> ), que ocultará muitas diferenças do navegador ao usar javascript para manipulação de dom.</li> <li>reunindo o desempenho percebido e as estruturas js, considere usar um serviço como a <a href="http://developers.google.com/speed/libraries/devguide">api das bibliotecas do google</a> para carregar estruturas para que um navegador possa usar uma cópia da estrutura que ele já armazenou em cache, em vez de fazer o download de uma cópia duplicada. copiar do seu site.</li> <li>não reinvente a roda. antes de fazer qualquer coisa, procure um componente ou exemplo de como fazê-lo. há 99% de chance de alguém ter feito isso e lançado uma versão oss do código.</li> <li>por outro lado, não comece com 20 bibliotecas antes mesmo de decidir quais são suas necessidades. particularmente na web do lado do cliente, onde quase sempre é mais importante manter as coisas leves, rápidas e flexíveis.</li> </ul><p><strong> correção de erros </strong></p><ul> <li>entenda que você gastará 20% do seu tempo codificando e 80% dele mantendo, portanto, codifique de acordo.</li> <li>configure uma boa solução de relatório de erros.</li> <li>tenha um sistema para as pessoas entrarem em contato com você com sugestões e críticas.</li> <li>documente como o aplicativo funciona para futuras equipes de suporte e pessoas que realizam manutenção.</li> <li>faça backups frequentes! (e verifique se esses backups estão funcionando) tenha uma estratégia de restauração, não apenas uma estratégia de backup.</li> <li>use um sistema de controle de versão para armazenar seus arquivos, como <a href="http://subversion.apache.org/">subversion</a> , <a href="http://mercurial.selenic.com/">mercurial</a> ou <a href="http://git-scm.org">git</a> .</li> <li>não se esqueça de fazer seu teste de aceitação. estruturas como <a href="http://seleniumhq.org/">selenium</a> podem ajudar. especialmente se você automatizar completamente seus testes, talvez usando uma ferramenta de integração contínua, como <a href="http://jenkins-ci.org/">jenkins</a> .</li> <li>verifique se você possui log suficiente usando estruturas como <a href="http://logging.apache.org/log4j/">log4j</a> , <a href="http://logging.apache.org/log4net/">log4net</a> ou <a href="http://log4r.rubyforge.org/">log4r</a> . se algo der errado no seu site ao vivo, você precisará descobrir como.</li> <li>ao fazer o log, certifique-se de capturar as exceções tratadas e não tratadas. relate/analise a saída do log, pois mostrará onde estão os principais problemas em seu site.</li> </ul><p><strong> outros </strong></p><ul> <li>implemente monitoramento e análise do lado do servidor e do cliente (um deve ser proativo em vez de reativo).</li> <li>use serviços como uservoice e intercom (ou qualquer outra ferramenta similar) para manter contato constante com seus usuários.</li> <li>siga <a href="http://nvie.com/about/">vincent driessen</a> 's <a href="http://nvie.com/posts/a-successful-git-branching-model/">git branching model</a> </li> </ul><p>muitas coisas foram omitidas não necessariamente porque não são respostas úteis, mas porque são muito detalhadas, estão fora do escopo ou vão um pouco longe demais para alguém que deseja obter uma visão geral do que deve saber. sinta-se à vontade para editar isso também, provavelmente perdi algumas coisas ou cometi alguns erros.</p> Html é uma linguagem de computação e não uma tecla.... <ul> <li>permite que você escreva códigos/use métodos de biblioteca que sejam seguros para o tipo, ou seja, uma lista &lt;string&gt; é garantida como uma lista de strings.</li> <li>como o uso de genéricos, o compilador pode executar verificações em tempo de compilação do código para segurança de tipo, ou seja, você está tentando inserir um int nessa lista de cadeias? usar um arraylist causaria um erro de tempo de execução menos transparente.</li> <li>mais rápido do que usar objetos, pois evita boxe/unboxing (onde .net precisa converter <a href="https://stackoverflow.com/questions/5057267/what-is-the-difference-between-a-reference-type-and-value-type-in-c">tipos de valor para tipos de referência ou vice-versa</a> ) ou converter objetos para o tipo de referência necessário.</li> <li>permite escrever código aplicável a muitos tipos com o mesmo comportamento subjacente, ou seja, um dictionary &lt;string, int&gt; usa o mesmo código subjacente que um dictionary &lt;datetime, double&gt;; usando genéricos, a equipe de estrutura precisou escrever apenas um trecho de código para alcançar os dois resultados com as vantagens mencionadas acima.</li> </ul> <p><code>{{app.session}}</code> refere-se ao objeto <code>session</code> e não ao array <code>$\_session</code>. não acho que a matriz <code>$\_session</code> esteja acessível, a menos que você a transmita explicitamente para todos os modelos twig ou se você fizer uma extensão que a torne disponível.</p><p>symfony2 é orientado a objeto, então você deve usar o objeto <code>session</code> para definir os atributos da sessão e não confiar na matriz. o objeto <code>session</code> abstrairá este material de você, então é mais fácil, por exemplo, armazenar a sessão em um banco de dados, porque armazenar a variável de sessão está oculta de você.</p><p>portanto, defina seu atributo na sessão e recupere o valor em seu modelo de galho usando o objeto <code>session</code>.</p><pre><code>// in a controller $session = $this-&gt;get('session'); $session-&gt;set('filter', array( 'accounts' =&gt; 'value', )); // in twig {% set filter = app.session.get('filter') %} {% set account-filter = filter['accounts'] %} </code></pre><p>espero que isto ajude.</p><p>saudações,<br/> matt</p> <p><code>arrays</code> em java tem um tamanho definido, não é possível alterá-lo posteriormente adicionando ou removendo elementos (você pode ler alguns princípios básicos <a href="http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html">aqui</a> ).</p><p>em vez disso, use um <a href="http://docs.oracle.com/javase/6/docs/api/java/util/list.html"><code>list</code></a> :</p><pre><code>arraylist&lt;string&gt; mylist = new arraylist&lt;string&gt;(); mylist.add(mystring); //this adds an element to the list. </code></pre><p>obviamente, se você souber antecipadamente quantas seqüências de caracteres você colocará em sua matriz, poderá criar uma matriz desse tamanho e definir os elementos usando a posição correta:</p><pre><code>string[] myarray = new string[numberofstrings]; myarray[23] = string24; //this sets the 24'th (first index is 0) element to string24. </code></pre> arraylist::new é uma referência ao construtor da classe arraylist, essa sintaxe é chamada de method reference. 
existem quatro tipos de method reference: 


referência à um método estático de uma classe: 
nomedaclasse::nomedometodoestatico 


referência à um método de instância de uma classe: 
nomed… <p>existe um padrão &quot;padrão&quot; para getters e setters em java, chamado <a href="http://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html">bean properties</a> . basicamente, qualquer método que comece com <code>get</code>, não tendo argumentos e retornando um valor, é um getter de propriedade para uma propriedade nomeada como o resto do nome do método (com uma letra inicial em minúsculas). da mesma forma, <code>set</code> cria um setter de um método void com um único argumento.</p><p>por exemplo:</p><pre><code>// getter for "awesomestring" public string getawesomestring() { return awesomestring; } // setter for "awesomestring" public void setawesomestring( string awesomestring ) { this.awesomestring = awesomestring; } </code></pre><p>a maioria dos ides java gerará esses métodos para você se você perguntar a eles (no eclipse é tão simples quanto mover o cursor para um campo e pressionar ctrl-1 e, em seguida, selecionar a opção na lista).</p><p>por que vale a pena, para legibilidade, você pode realmente usar <code>is</code> e <code>has</code> no lugar de <code>get</code> para propriedades de tipo booleano também, como em:</p><pre><code>public boolean isawesome(); public boolean hasawesomestuff(); </code></pre> <p>atualização de janeiro de 2013: a <strong> <a href="https://github.com/blog/1381-a-whole-new-code-search">nova pesquisa chegou!</a> </strong>, com base em <strong> - <a href="http://www.elasticsearch.org/community/">elasticsearch.org</a> </strong>:</p><p>uma busca por stat dentro do ruby repo será expressa como <strong> <a href="https://github.com/search?q=stat%20repo:ruby/ruby&amp;type=code&amp;ref=advsearch&amp;l="><code>stat repo:ruby/ruby</code></a> </strong>, e agora irá funcionar<sup><sup>tm</sup></sup>.<br> (o nome do repositório não faz distinção entre maiúsculas e minúsculas: <a href="https://github.com/search?q=repo:wordpress/wordpress%20test&amp;type=code&amp;ref=searchresults"><code>test repo:wordpress/wordpress</code></a> retorna o mesmo que <a href="https://github.com/search?q=repo:wordpress/wordpress%20test&amp;type=code&amp;ref=searchresults"><code>test repo:wordpress/wordpress</code></a> )</p><p><img src="https://i.stack.imgur.com/okler.png" alt="enter image description here"></p><p>darei:</p><p><img src="https://i.stack.imgur.com/mjptm.png" alt="enter image description here"></p><p>e você tem muitos outros exemplos de pesquisa, baseados <a href="https://stackoverflow.com/a/5740886/6309">em seguidores</a> , ou <a href="https://stackoverflow.com/a/12241932/6309">em garfos</a> , ou ...</p><hr><p><strong> atualização de julho de 2012 </strong> (antigos dias de pesquisa lucene e indexação de código pobre, combinados com gui quebrada, mantidos aqui para arquivamento):</p><p>a pesquisa (com base em <a href="http://wiki.apache.org/solr/solrquerysyntax">solrquerysyntax</a> ) é agora mais permissiva e o temido "<code>invalid search query. try quoting it.</code>" desapareceu ao usar o <em>default</em> ​​seletor de pesquisa "everything" :)</p><p>(eu suponho que todos nós podemos <strong> <a href="https://twitter.com/pea53">tim pease</a> </strong>, que tinha em um de seus objetivos <a href="https://github.com/blog/1116-tim-pease-is-a-githubber">"hacking em melhorada experiências de busca para todas as propriedades do github</a> ", e <a href="https://twitter.com/vonc\_/status/197565733830541313">eu mencionei essa questão do stack overflow</a> na época;))</p><p>aqui está uma ilustração de um grep dentro do código ruby: ele procura por repositórios e usuários, mas <em>também</em> para o que eu queria pesquisar em primeiro lugar: o código!</p><p><img src="https://i.stack.imgur.com/hhkvy.png" alt="github more permissive search results"></p><hr><p>resposta inicial e ilustração da primeira edição (setembro de 2012 =&gt; março de 2012)</p><p>você pode usar o <a href="http://github.com/search">formulário de pesquisa avançada do github</a> :</p><ul> <li>escolha <code>code</code>, <code>repositories</code> ou <code>users</code> no drop-down e</li> <li>use os prefixos correspondentes <strong> listados para esse tipo de pesquisa </strong>.</li> </ul><p>por exemplo, use a diretiva <strong><code>repo:username/repo-name</code></strong> para limitar a pesquisa a um <strong> código </strong> repositório.<br> a página inicial "<code>advanced search</code>" inclui a seção:</p><blockquote> <p><strong> <em>code</em> </strong> pesquisar:</p> <p>a pesquisa do código examinará todo o código hospedado publicamente no github. você também pode filtrar por:</p> <ul> <li>o idioma <strong><code>language:</code></strong></li> <li>o nome do repositório (incluindo o nome de usuário) <strong><code>repo:</code></strong></li> <li>o caminho do arquivo <strong><code>path:</code></strong></li> </ul> </blockquote><p>portanto, se você selecionar o seletor de pesquisa "<code>code</code>", sua consulta para um texto dentro de um repositório funcionará:</p><p><img src="https://i.stack.imgur.com/a58wf.png" alt="good search selector"></p><hr><p>o que é <em>incrivelmente</em> <strong> inútil </strong> do github é que:</p><ul> <li>se você esquecer de colocar o seletor de busca correto (aqui "<code>code</code>"), você receberá uma mensagem de erro:<br> "<strong><code>invalid search query. try quoting it.</code></strong>"</li> </ul><p><img src="https://i.stack.imgur.com/fjtq8.png" alt="wrong selector for the code filer"></p><ul> <li> <p>a mensagem de erro não ajuda em nada.<br> nenhuma quantidade de "<code>quoting it</code>" tirará você deste erro.</p> </li> <li> <p>depois de receber essa mensagem de erro, você não verá as seções lembrando a associação correta entre a pesquisa <em>seletores</em> ("<code>repositories</code>", "<code>users</code>" ou "<code>language</code>") e a pesquisa (à direita) <em>filtros</em> (aqui "<code>repo:</code>").<br> qualquer outra tentativa que você fizer não exibirá essas associações (seletores-filtros) de volta. apenas a mensagem de erro que você vê acima ...<br> a única maneira de recuperar esses arrays é clicando no ícone "<code>advance search</code>":</p> </li> </ul><p><img src="https://i.stack.imgur.com/fpefn.png" alt="advance search icon on github"></p><ul> <li> <p>o seletor de pesquisa "<code>everything</code>", que é o padrão, é na verdade o <em>errado</em> um para <em>todos</em> dos filtros de pesquisa! exceto "<code>language:</code>" ...<br> (você poderia imaginar/assumir que "<code>everything</code>" ajudaria você a escolher qualquer que seja o seletor de pesquisa que realmente funcione com o filtro de pesquisa "<code>repo:</code>", mas não. isso seria fácil demais)</p> </li> <li> <p>você não pode especificar o seletor de pesquisa desejado por meio do campo "<code>advance search</code>" sozinho!<br> (mas você pode para "<code>language:</code>", mesmo que "<code>search language</code>" seja outra caixa de combinação logo abaixo do "<code>search for</code>" 'digite' uma ...)</p> </li> </ul><p><img src="https://i.stack.imgur.com/6awa6.png" alt="wrong search selector"></p><hr><p>então, a experiência do usuário geralmente é a seguinte:</p><ul> <li>você clica em "<code>advanced search</code>", observa essas seções de filtros e percebe uma que deseja usar: "<code>repo:</code>"</li> <li>você faz uma primeira pesquisa avançada "<code>repo:jruby/jruby stat</code>", mas com o seletor de pesquisa padrão "<code>everything</code>"<br> =&gt; <code>fail</code>! (e os arrays que exibem a associação "seletores-filtros" são <strong> desaparecidos </strong>)</li> <li>você percebe que "search for" selector thingy, selecione o <em>first</em> ​​choice "<code>repositories</code>" ("dah! eu quero pesquisar dentro de repositórios ...")<br> =&gt; <code>fail</code>!</li> <li>desanimado, você seleciona a próxima opção de seletores (aqui, "<code>users</code>"), sem sequer olhar para o dito seletor, só para dar mais uma chance ...<br> =&gt; <code>fail</code>!</li> <li>"dane-se, a busca no github é <strong> quebrada </strong>! eu estou fora daqui!"<br> ...<br> <sup>(a pesquisa avançada do github não está realmente quebrada. apenas sua gui é ...)</sup></li> </ul><hr><p>então, para recapitular, se você quiser "grep para algo dentro de um código do projeto do github", como o op <a href="https://stackoverflow.com/users/392350/ben-humphreys">ben humphreys</a> , não se esqueça de selecionar o seletor de pesquisa "<code>code</code>" ...</p>