Ang null ba ay isang bagay? Masasabi kong hindi talaga. Sa kahulugan na
(null instanceof Object)
ito ay magbibigay ng halaga false
. Narito kung ano pa ang kailangan mong malaman tungkol sa null:
- Hindi ka maaaring tumawag ng isang pamamaraan na may halaga na null:
x.m()
ito ay magtapon ng isang error kapagx
ang halaga ay null atm
ang pamamaraan ay hindi static. Sa pamamagitan ng paraan, kungm
ito ay isang static na pamamaraan, lahat ay maayos, dahil ang klase lamang ang mahalagax
, at ang halaga ay hindi pinansin. - Mayroon lamang isang null para sa lahat, at hindi isang hiwalay para sa bawat klase. Kaya,
((String) null == (Hashtable) null)
halimbawa. - Ito ay ganap na katanggap-tanggap na ipasa ang null bilang isang parameter sa isang pamamaraan kung pinapayagan ito ng pamamaraan (ang ilang mga pamamaraan ay nagpapahintulot sa isang null na parameter, ang iba ay hindi). Kaya, halimbawa, maaari kang magsulat
System.out.println (null)
, ngunitbutstring.compareTo (null)
hindi ito gagana. Kaya palaging ipahiwatig sa mga komento ng javadoc ng iyong mga pamamaraan kung ang null ay katanggap-tanggap bilang kanilang mga parameter, kung hindi ito ganap na halata. - Sa JDK mula sa bersyon 1.1 hanggang 1.1.5, ang pagpasa ng null bilang literal na argumento sa constructor ng isang anonymous na panloob na klase (halimbawa,
new SomeClass(null) { ...}
nagdulot ng error sa compiler. Gayunpaman, maaari kang magpasa ng expression na may value na null, o magpasa ng forced null, sa anyonew SomeClass((String) null) { ...}
- Mayroong hindi bababa sa tatlong magkakaibang mga kaso, na karaniwang ipinahayag gamit ang null:
- Uninitialized (walang initialization). Isang variable o slot na hindi pa naitatalaga ng anumang halaga.
- Non-existant/not applicable . Halimbawa, ang mga terminal node ng isang binary tree ay maaaring tawaging ordinaryong node na may mga null na bata.
- Walang laman (emptiness of something). Halimbawa, maaari mong gamitin ang null upang kumatawan sa isang walang laman na puno. Tandaan na ito ay lubos na naiiba mula sa nakaraang kaso (sila ay madalas na nalilito sa pagsasanay). Ang pagkakaiba ay kung ang null ay isang katanggap-tanggap na tree node o kung ang null ay nangangahulugan na ang halaga ay hindi kailangang ituring bilang isang tree node.
-
// null означает «не применимо» // Здесь нет пустого дерева. class Node { Object data; Node left, right; void print() { if (left != null) left.print(); System.out.println(data); if (right != null) right.print(); } }
-
// null означает пустое дерево // обратите внимание на статические и нестатические методы class Node { Object data; Node left, right; void static print(Node node) { if (node != null) node.print(); } void print() { print(left); System.out.println(data); print(right); } }
-
// Отдельный класс для Empty // null не используется interface Node { void print(); } class DataNode implements Node{ Object data; Node left, right; void print() { left.print(); System.out.println(data); right.print(); } } class EmptyNode implements Node { void print() { } }
Paghambingin ang tatlong pagpapatupad ng mga binary tree node na may sequential console output method:
GO TO FULL VERSION