Jak zkontrolovat, zda prvek v poli existuje v Javě




Mám-li mít `int`řadu strukturovanou takto:



```
private int[][] map = new int[400][400];

```

A snažím se získat



```
map[100][200]

```

A tento prvek není inicializována, budu mít / runtime chyba kompilátoru nebo vrátí null? A je tu nějaká funkce pro kontrolu, zda existuje / byl stanoven určitý prvek / index?
Jak se vaše prohlášení pole je primitivního typu nebudete mít žádné chyby kompilátoru nebo runtime - bude vrácena výchozí hodnota 0.


Pokud váš pole byla řada objektů, pak se pole bude držet `null`v případě jakéhokoli prvku není specificky přiřazena.
<p>to je způsob, jak zjistit, zda v této složce existují nějaké soubory xml, ano.</p><p>chcete-li zkontrolovat konkrétní soubory, použijte <a href="http://msdn.microsoft.com/en-us/library/system.io.file.exists.aspx"><code>file.exists(path)</code></a> , které vrátí logickou hodnotu, která indikuje, zda soubor v souboru <code>path</code> existuje.</p> Tak ono zalezi o jakou dokumentaci ti jde. Muzes mit dokumentaci ve forme JavaDoc pro Javovske aplikace. K tomu ti staci vyvojovy nastroj, ktery vyvojari uz pouzivaji. Lze z toho generovat html stranky. Toto je dokumentace pro vyvojare. (IMHO javadoc ale obecne komentare a poznamky v kodu jsou musthave, at uz nejakou dokumentaci vubec planujete delat nebo ne ;) )Testy jsou z urciteho pohledu taky dokumentace. Dokumentuji, jak urcite casti maji fungovat, jake jsou okrajove podminky, a co to delat nema.Pokud mas na mysli napr user guide, nebo architecture, security, maintenance/support a podobne, tak nato muzes pouzit treba LibreOffice s podporou nastroju pro tvorbu napr. UML diagramu, jako treba class diagram. Tady mas moznosti jako EnterpriseArchitect (placeny, ale existuje i spousta free variant). Je toho spousta. Nebo muzes pouzit nejaka online reseni (i v ramci intranetu), jako napr. wiki, Confluence, E-share, GitHub (muzes mit interni/privatni instalaci, GitHub ma svoji vlastni wiki) <p>nezapomeňte na transakce. výkon je dobrý, ale jednoduchý (if exists ..) přístup je velmi nebezpečný.<br> když se několik podprocesů pokusí provést insert-or-update, můžete snadno získat narušení primárního klíče.</p><p>řešení poskytovaná @beau crawford &amp; @esteban ukazují obecnou myšlenku, ale náchylnou k chybám.</p><p>chcete-li se vyhnout zablokování a narušení pk, můžete použít něco takového:</p><pre><code>begin tran if exists (select * from table with (updlock,serializable) where key = @key) begin update table set ... where key = @key end else begin insert into table (key, ...) values (@key, ...) end commit tran </code></pre><p>nebo</p><pre><code>begin tran update table with (serializable) set ... where key = @key if @@rowcount = 0 begin insert into table (key, ...) values (@key,..) end commit tran </code></pre> <h2>null je zlé</h2><p>na infoq je prezentace na toto téma: <strong> <a href="http://www.infoq.com/presentations/null-references-the-billion-dollar-mistake-tony-hoare">null reference: the billion dollar mistake</a> </strong> by <em> tony hoare</em></p><h2>typ volby</h2><p>alternativou k funkčnímu programování je použití <a href="http://en.wikipedia.org/wiki/option\_type">typ volby</a> , který může obsahovat <code>some value</code> nebo <code>none</code>.</p><p>dobrý článek <strong> <a href="http://www.codecommit.com/blog/scala/the-option-pattern">vzor „option“</a> </strong>, který diskutuje typ možnosti a poskytuje jeho implementaci pro javu.</p><p>našel jsem také hlášení o chybě java o tomto problému: <a href="http://bugs.sun.com/bugdatabase/view\_bug.do?bug\_id=5030232">přidat pěkné typy možností do java, aby se zabránilo nullpointerexceptions</a> . <a href="https://docs.oracle.com/javase/8/docs/api/java/util/optional.html">požadovaná funkce</a> byl představen v java 8.</p> <p>to fungovalo pro mě:</p><pre><code>$get("isageselected ").checked == true </code></pre><p>kde <code>isageselected</code> je id ovládacího prvku.</p><p>také @ karim79 je <a href="https://stackoverflow.com/questions/901712/check-checkbox-checked-property-using-jquery/901727#901727">odpověď</a> funguje dobře. nejsem si jistý, co mi při té zkoušce chybělo.</p><p><strong> poznámka: toto je odpověď používající microsoft ajax, nikoli jquery </strong></p> Ano a ten program na automatické vyhledání driverů mi píše, že jsou všechny správně nainstalovány, ale pokud spustím jakoukoliv hru spadne a napíše, že nemám naistalován ovladač.. Takže když už jste přeinstalovával kde co, tak jste asi prvně kouknul do systémového logu, zda tam není nějaká chyba, pravděpodobně tam může být o nějaké komponentě driveru grafiky, případně nějaké .NET komponenty. <p>před pár minutami jsem to kontroloval: <a href="http://blog.cherouvim.com/a-table-that-should-exist-in-all-projects-with-a-database/">tabulka, která by měla existovat ve všech projektech s databází</a> , se zdá být dost jednoduchá na to, aby se dala do praxe, podívejte se na to:</p><blockquote> <p>říká se tomu schema\_version (nebo migrace nebo cokoli vám vyhovuje) a jeho účelem je sledovat strukturální nebo datové změny v databázi. možná struktura (příklad v mysql) je:</p> <pre><code>create table schema\_version ( `when` timestamp not null default current\_timestamp, `key` varchar(256) not null, `extra` varchar(256), primary key (`key`) ) engine=innodb; </code></pre> <p>vložte do hodnot schema\_version (<code>key</code>, <code>extra</code>) ('001', 'verze schématu');</p> <p>ať už přidáte tuto tabulku od začátku projektu nebo ihned po nasazení první verze na pracovní nebo produkční server, je jen na vás.</p> <p>kdykoli potřebujete provést skript sql, abyste změnili strukturu databáze nebo provedli migraci dat, měli byste do této tabulky přidat také řádek. a udělejte to prostřednictvím příkazu insert na začátku nebo na konci tohoto skriptu (který je zavázán do úložiště kódu projektu).</p> <p>…</p> </blockquote> <p>vypadá to, že kódujete v jazyce c #, který má metodu nazvanou equals, kterou by vaše třída měla implementovat, pokud chcete porovnat dva objekty s použitím jiné metriky než „jsou tyto dva ukazatele (protože popisovače objektů jsou právě to, ukazatele) na stejnou adresu paměti? &quot;.</p><p>chytil jsem pár ukázkových kódů z <a href="http://msdn.microsoft.com/en-us/library/ms173147(vs.80).aspx">zde</a> :</p><pre><code>class twodpoint : system.object { public readonly int x, y; public twodpoint(int x, int y) //constructor { this.x = x; this.y = y; } public override bool equals(system.object obj) { // if parameter is null return false. if (obj == null) { return false; } // if parameter cannot be cast to point return false. twodpoint p = obj as twodpoint; if ((system.object)p == null) { return false; } // return true if the fields match: return (x == p.x) &amp;&amp; (y == p.y); } public bool equals(twodpoint p) { // if parameter is null return false: if ((object)p == null) { return false; } // return true if the fields match: return (x == p.x) &amp;&amp; (y == p.y); } public override int gethashcode() { return x ^ y; } } </code></pre><p>java má velmi podobné mechanismy. metoda<em> equals () </em>je součástí třídy<em> object </em>/ a vaše třída ji přetěžuje, pokud chcete tento typ funkce.</p><p>důvodem přetížení '==' může být špatný nápad pro objekty je to, že obvykle stále chcete být schopni udělat &quot;jsou tyto stejné ukazatel&quot; srovnání. obvykle se na ně spoléhá například při vkládání prvku do seznamu, kde nejsou povoleny žádné duplikáty, a některé z vašich částí systému nemusí fungovat, pokud je tento operátor přetížen nestandardním způsobem.</p> <p>chcete-li zkontrolovat nestandardní řazení ve sloupcích, můžete použít následující dotaz:</p><pre><code>select table\_schema, table\_name, column\_name, collation\_name from information\_schema.columns where collation\_name is not null order by table\_schema, table\_name, ordinal\_position; </code></pre><p>chcete-li najít řazení databáze, je třeba zadat dotaz <code>pg\_database</code>:</p><pre><code>select datname, datcollate from pg\_database; </code></pre><p>zde jsou relevantní stránky příručky postgresql:</p><ul> <li> <a href="http://www.postgresql.org/docs/current/static/infoschema-columns.html">http://www.postgresql.org/docs/current/static/infoschema-columns.html</a> </li> <li> <a href="http://www.postgresql.org/docs/current/static/infoschema-collations.html">http://www.postgresql.org/docs/current/static/infoschema-collations.html</a> </li> <li> <a href="http://www.postgresql.org/docs/current/static/catalog-pg-database.html">http://www.postgresql.org/docs/current/static/catalog-pg-database.html</a> </li> </ul>