Syntax der Java-Importanweisung

8

Dies ist eine einfache Frage, aber ich bin wirklich davon abgehört. Ich versuchte ein Duplikat zu finden und googelte es, aber ich war mehr überrascht, als ich keine befriedigende Antwort finden konnte.

%Vor%

In dieser Anweisung ist .Scanner die Klasse

.util ist der Name des Pakets

Was ist java oder javax oder was würde vor der ersten Periode generell stehen?

UPDATE:

Ich habe auch dieses Bild gefunden:

Ссылка

Stimmt es?

    
user3081519 25.12.2013, 22:26
quelle

7 Antworten

7

Nach dem JLS 7.1 :

  

Die Mitglieder eines Pakets sind seine Unterpakete und alle Klassen der obersten Ebene (§7.6, §8) und die Oberflächentypen der obersten Ebene (§9), die in allen Kompilierungseinheiten (§7.3) des Pakets deklariert sind.

     

Zum Beispiel in der Java SE-Plattform-API:

     
  • Das Paket java hat die Unterpakete awt, applet, io, lang, net und util, aber keine Kompilierungseinheiten.

  •   
  • Das Paket java.awt hat ein Unterpaket namens image sowie eine Anzahl von Kompilierungseinheiten, die Deklarationen von Klassen- und Schnittstellentypen enthalten.

  •   

Wenn der vollständig qualifizierte Name (§6.7) eines Pakets P ist und Q ein Unterpaket von P ist, dann ist P.Q der vollständig qualifizierte Name des Unterpakets und bezeichnet außerdem ein Paket.

So können Sie daraus entnehmen:

  • java ist ein Paket ohne Klassen, nur Unterpakete.
  • util ist ein Unterpaket von java , dessen vollständig qualifizierter Name java.util ist.
  • util bezeichnet kein Paket, java.util .

"Ich habe auch dieses Bild gefunden: ... Stimmt es?"

Ja, util ist ein Unterpaket von java . % Co_de% ist jedoch kein Paket. util ist ein Paket.

Sie können Pakete als Verzeichnisstruktur betrachten, wenn Sie möchten, wobei jedes Unterpaket ein Ordner in seinem äußeren Paket ist. So würde es einen "Ordner" Java geben, und darin einen anderen "Ordner" util. Ein Paket wird mit seinem vollständig qualifizierten Namen ("vollständiger Pfad") bezeichnet, sodass java.util ein Paket und java ein Paket ist. java/util ist kein Paket. Aber Pakete, die durch eine Verzeichnisstruktur dargestellt werden, sind keine Spezifikationen. Es ist nur eine übliche Implementierung. Es hängt vom Host-System ab, wie Pakete gespeichert werden ( JLS 7.2 ).

    
Radiodef 25.12.2013, 22:49
quelle
4

Klassen in Java werden durch einen vollständig qualifizierten Namen identifiziert, der aus einer Verkettung des Pakets der Klasse und dem Namen der Klasse (und eventueller äußerer Klassen) besteht. Im Allgemeinen in einer Importanweisung wie:

%Vor%

Alles außer dem letzten Punkt-getrennten Feld ist der Paketname ( foo.bar.baz ) und das letzte Feld ist der Klassenname ( MyClass ). In Ihrem Beispiel ist java.util der Paketname und Scanner ist der Klassenname.

Der Prozess ist eigentlich ein bisschen komplizierter, da interne / verschachtelte Klassen und Schnittstellen beteiligt sein können, aber Sie bekommen die Idee.

    
Darkhogg 25.12.2013 22:32
quelle
1

import java.util.Scanner sagt.

  1. Schauen Sie in das Paket java.
  2. Innerhalb dieses Blicks in das Paket util.
  3. Finde darin die Klasse Scanner.
  4. Nun, wenn wir den Namen einer Klasse / etc in dieser Java-Datei verwenden (zum Beispiel Scanner s = new Scanner() ), wird die vom Import gefundene Klasse verwendet.

Alternativ könntest du den Import nicht machen und java.util.Scanner s = new java.util.Scanner() machen, aber du kannst sehen, wie das schnell unhandlich wird, besonders wenn du es an vielen Stellen innerhalb deiner Datei verwendest. Importe sind nur eine praktische Möglichkeit, die Anzahl der Versionen Scanner , die Sie meinen, wenn Sie auf Scanner verweisen, immer wieder zu reduzieren.

    
Tim B 25.12.2013 22:34
quelle
1

Einige Punkte:

  • Der Paketname lautet java.util , nicht util . "Java" ist nur ein Teil des Paketnamens.
  • Paketnamen sind eine beliebige Reihe gültiger Java-Bezeichner, die durch Punkte getrennt sind, AbC123.XYZ.foo ist ein gültiger Paketname
  • Paket kann weggelassen werden. Wenn nicht, ist die Klasse im Stammverzeichnis des Projekts (ich habe einmal an einem Projekt in der Produktion gearbeitet, das keine Pakete hatte! Alles war in einem Verzeichnis ... Huch!)
  • Per Konvention sind Pakete, die mit java beginnen, Teil des JDK (plus Erweiterungen). Es gibt nichts in der Sprache, das dies spezifiziert oder erzwingt
Bohemian 25.12.2013 22:39
quelle
1

java und util sind Namen verschachtelter Pakete. java.util ist ein Pfad zum endgültigen Paket.

Sie sind Verzeichnisse in rt.jar file.

rt.jar Datei ist ein zip Archiv, Sie können es mit 7-zip Programm ansehen.

Scanner ist eine Scanner.class Datei innerhalb java/util Verzeichnis innerhalb rt.jar

import java.util.Scanner -Direktive erlaubt nur die Verwendung von Scanner -Klassennamen im Code, ohne den vollständigen Pfad anzugeben.

Die Direktive

import java.util.* erlaubt Ihnen, ALLE Klassennamen in java.util ohne Pfad zu verwenden.

Die Direktive

import static java.util.Scanner.* erlaubt Ihnen, ALLE statischen Member in Scanner ohne Pfade zu verwenden. Aber es gibt keine.

Liste aller Pakete in JRE sind hier: Ссылка

    
Suzan Cioc 25.12.2013 22:40
quelle
0

1) Java ist ein Paket. (stellt auch einen Ordner im Dateisystem dar).
Es befindet sich direkt im Klassenpfad, daher wird es von Ihrem Programm als 'Java' referenziert. (Unterordner im Java-Ordner)

2) util ist ein Paket innerhalb eines Java-Pakets (daher als 'java.util' bezeichnet).

3) Der Scanner ist eine Klasse im util-Paket (daher 'java.util.Scanner')

Sie können so viele verschachtelte Pakete haben wie 'mypackage1.mypackage2.mypackage3. ... und so weiter, solange mein Paket1 im Klassenpfad ist.

Hoffe, das hilft

    
Tanmay Patil 25.12.2013 22:34
quelle
-1

Die import-Anweisung repräsentiert eine Hierarchie

importieren Sie java.util.Scanner;

Java ist das Paket
util ist das Unterpaket (innerhalb von Java)
Scanner ist die Klasse (inside util)

importieren Sie java.util. *;

Der Klassenname könnte mit einem Sternchen,
belegt werden und das bedeutet, dass ALLE Klassen in das erwähnte Unterpaket importiert werden.

    
Smartian 25.12.2013 23:37
quelle

Tags und Links