Java-import-Anweisung syntax
Dies ist eine einfache Frage, aber ich bin wirklich nervte, indem Sie es. Ich war versuchen zu finden, ein Duplikat ist, und es gegoogelt, aber ich war mehr überrascht, als ich nicht finden konnte eine befriedigende Antwort.
import java.util.Scanner;
In dieser Erklärung .Scanner
ist die Klasse,
.util
ist der name des Pakets
Was ist java
oder javax
oder was auch immer stehen würde, vor der ersten Periode im Allgemeinen?
UPDATE:
Fand ich auch dieses Bild:
http://www.javatpoint.com/package
Ist es wahr?
java.util
ist der name des Pakets.- Java oder javax auch Teile des package-namens.
- und die ganzen " java.util.Scanner ist ein voll Qualifizierter Klassenname 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Pro die JLS 7.1:
So können Sie von diesem auflesen:
java
ist ein Paket mit keine Klassen, nur Unterpakete.util
ist ein unterpackage vonjava
deren voll Qualifizierter name istjava.util
.util
nicht bezeichnen ein Paketjava.util
tut."Fand ich auch dieses Bild: ... Ist es wahr?"
Ja,
util
ist ein unterpackage vonjava
. Allerdingsutil
ist nicht ein Paket.java.util
ist ein Paket.Können Sie denken Pakete in einem Verzeichnis-Struktur, wenn Sie wünschen, wo jedes subpackage installiert ist einen Ordner in seiner Umverpackung. So würde es ein "Ordner" java und, innerhalb dieses, ein anderer "Ordner" util. Ein Paket ist gekennzeichnet durch seinen voll qualifizierten Namen ("vollständiger Pfad"), so
java
ist ein Paket undjava/util
ist ein Paket./util
ist nicht ein Paket. Aber die Pakete, dargestellt durch eine Verzeichnis-Struktur, ist nicht eine Spez. Es ist nur eine gemeinsame Umsetzung. Es ist bis zu dem host-system zu entscheiden, wie Pakete gespeichert sind (JLS 7.2).util
"innen"java
, aberjava
undjava.util
Verhalten sich wie völlig unabhängige Pakete.P
ist ein Paket undP.Q
ist ein Paket, das bedeutet nicht, dass einige KlasseP.Q.SomeClass
können die Verwendung einer anderen KlasseP.AnotherClass
durch seinen einfachen Namen, ohne einen import oder den Zugriff auf Ihre Paket-private - /protected-member und vice-versa. Obwohl nach den specQ
ist ein Mitglied derP
.Klassen in Java sind gekennzeichnet durch eine voll qualifizierten Namen bestehend aus einer Verkettung des Pakets, der Klasse und dem Namen der Klasse (und alle äußeren Klassen, wenn überhaupt). Im Allgemeinen, in einer import-Anweisung wie:
alles außer dem letzten Punkt getrennte Feld ist der Paketname (
foo.bar.baz
) und das Letzte Feld ist der name der Klasse (MyClass
). In deinem Beispieljava.util
ist der Paketname und dieScanner
ist der name der Klasse.Der Prozess ist eigentlich ein bisschen komplizierter, als innere/geschachtelte Klassen und Schnittstellen, die beteiligt sein können, aber Sie bekommen die Idee.
import java.util.Scanner
sagt.Scanner s = new Scanner()
), dann wird die Klasse gefunden, die durch den import verwendet werden.Alternativ könnte man das nicht importieren und tun
java.util.Scanner s = new java.util.Scanner()
aber Sie können sehen, wie das wäre schnell unhandlich, vor allem, wenn Sie es in eine Menge von Orten, die in die Datei. Importe sind nur eine praktische Art und Weise zu verringern, wiederholt die Angabe, welche version desScanner
Klasse, die Sie meinen, wenn Sie beziehen sich aufScanner
.Ein paar Punkte:
java.util
, nichtutil
. "java" ist nur ein Teil des Paket-Namen.AbC123.XYZ.foo
ist eine gültige package-Namenjava
sind Teil des JDK (plus Erweiterungen). Es gibt nichts in der Sprache, der angibt, diese oder erzwingt esjava
undutil
sind Namen, die in den verschachtelten Paketen ist.java.util
ist ein Weg, um final-Paket.Sind Sie Verzeichnisse in
rt.jar
Datei.rt.jar
- Datei ist einezip
Archiv, man kann es mit7-zip
Programm.Scanner
ist einScanner.class
Datei injava/util
Verzeichnis imrt.jar
import java.util.Scanner
Richtlinie nur erlaubt, Sie zu verwendenScanner
Klassenname in code, ohne Angabe von vollständigen Pfad.import java.util.*
Richtlinie können Sie ALLE Klassennamen injava.util
ohne Pfad.import static java.util.Scanner.*
Richtlinie können Sie ALLE statischen Elemente innerhalbScanner
, ohne Pfade. Aber es gibt keine.Liste aller Pakete in der JRE sind hier: http://docs.oracle.com/javase/7/docs/api/overview-summary.html
1) java ist eine Paket. (stellt auch einen Ordner im Datei-system).
Es ist direkt in den classpath, so dass darauf verwiesen wird, die von Ihrem Programm wie "java". (Unterordner im java-Ordner)
2) util Paket innerhalb des java-Pakets (daher verwiesen als 'java.util').
3) Scanner ist eine Klasse in util-Paket (also 'java.util.Scanner')
Können Sie so viele verschachtelte Pakete, wie Sie wollen, wie 'mypackage1.mypackage2.mypackage3. ...' und so weiter, so lange, wie mypackage1 ist in den classpath.
Hoffe, das hilft
die import-Anweisung, eine Hierarchie darstellen
java
ist das Paketutil
ist das subpackage (inside java)Scanner
die Klasse ist, die (innen-util)import java.util.*;
Den Namen der Klasse sein könnte subtituited mit einem Sternchen,
und das bedeutet, import alle Klassen in den genannten subpackage installiert.