Wann nutze ich "import"?

Wang

Bekanntes Mitglied
Moin',

kurz eine Frage. In einem Beispielprogramm wurde "System.in.read()" verwendet und in einem anderen Beispielprogramm die Methode "next()".
Im ersten Beispielprogramm wurde nichts importiert und im zweiten wurde "java.util.Scanner" importiert.

Warum hieß es im ersten Programm nicht:
import java.util.System
import java.io.InputStream

Gibt es eine Regel, die bestimmt, wann man man am Anfang des Quelltextes den Import angeben muss?


Vielen Dank für Eure Unterstützung.

Gruß
Wang
 

Runtime

Top Contributor
1. System gehört ins java.lang package und das wird automatisch importiert
2. Du musst die Klasse nur importieren, wenn du sie wirklich als Klasse brauchst (statische Methoden, Variablen, Instanzierung von Objekten). Wenn du das Objekt schon hast, musst du die Klasse nicht importieren.
 

Michael...

Top Contributor
Gibt es eine Regel, die bestimmt, wann man man am Anfang des Quelltextes den Import angeben muss?
Du Regel lautet: Den import gibt man an, wenn er benötigt wird. ;-)

Klassen aus java.lang.* (z.B System, String...) müssen nicht explizit importiert werden, da das Package automatisch importiert wird.
Klassen aus anderen Packages müssen per import eingebunden oder im Programm per vollständigem Namen angesprochen werden.

z.B. erfordert
Code:
java.io.InputStream in = ...
im Code keinen expliziten import.
 

Schandro

Top Contributor
import ist nur eine unwichtige Syntax-Sache. Schlussendlich ist es für den Programmablauf vollkomen egal, was du alles importiert hast. Wenn du eine IDE wie bspw. Eclipse verwendest, brauchst du dich um die importe überhaupt nicht mehr zu kümmern. Einfach Strg+Shift+O und Eclipse generiert die Importe von sich aus (bei Doppeldeutigkeiten, wie z.B. java.util.List und java.awt.List, fragt Eclipse dann nochmal nach).

Danke soweit. Genau das verstehe ich noch nicht. Warum erfordert dies keinen expliziten import, schließlich gehört das nicht zu java.lang.*?
Den Compiler ist es egal ob du im Quellcode
Code:
 java.io.InputStream
schreibst oder ob du oben in der .java Datei
Code:
import java.io.InputStream
stehen hast. Der Compiler braucht einfach nur die Information, zu welchen package
Code:
InputStream
gehört.

Wie bereits erwähnt: Importe ändern nichts am Programmablauf. Sie sind das das unwichtigste in einem Java-Quellcode.
 
Zuletzt bearbeitet:
M

Marcinek

Gast
Angenommen du hast diese Situation:

packet.a
- KlasseA
packet.b
- KlasseA
packet.c
- KlasseA


du machst nun

Code:
new KlasseA();

Welche Klasse wird genommen?

du machst

import packet.a.KlasseA;

Code:
new KlasseA();

Welche Klasse wird genommen?

Code:
new packet.a.KlasseA();

Welche Klasse wird genommen?
 

Wang

Bekanntes Mitglied
Den Compiler ist es egal ob du im Quellcode
Code:
 java.io.InputStream
schreibst oder ob du oben in der .java Datei
Code:
import java.io.InputStream
stehen hast. Der Compiler braucht einfach nur die Information, zu welchen package
Code:
InputStream
gehört.

Okay, hier der besagte Code:

Java:
// Datei: Zeichen.java

public class Zeichen
{
   // beachten Sie die Deklaration der Methode main() nicht
   public static void main (String[] args) throws Exception
   {
      int c = 0;
      int anzahl = 0;

      do
      {
         // System.in.read() gibt einen int-Wert im Bereich 0 bis
         // 255 zurück. -1 wird zurückgegeben, wenn kein Zeichen
         // mehr im Dateipuffer steht.
         c = System.in.read();

         if (c != -1)
         {
            // mit (char) c wird die int-Variable c
            // in ein Zeichen gewandelt
            System.out.println ("ASCII-Code: " + c
                               + " Zeichen: " + (char) c);
            anzahl = anzahl + 1;
         }
      } while (c != -1);
      System.out.println ("\nAnzahl: " + anzahl);
   }
}

"read()" gehört zu "java.io.InputStream" und wird ja im Gegensatz zu "java.lang.*" nicht implizit importiert. Warum kommt dieses Programm hier trotzdem ohne import aus?
 
S

SlaterB

Gast
Java weiß, von welchem Typ die Variable dort ist, das steht dort im Import,
nur wenn du selber Variablen anlegst/castest oder Klassen (statisch/ als Typ) ansteuerst musst du eigene Angaben machen

'import' ist eher übertrieben, eigentlich ist es nur eine genaue Bezeichnung bzw. das Anlegen einer Abkürzung zur Verwendung im Quellcode
 
Zuletzt bearbeitet von einem Moderator:

Schandro

Top Contributor
"read()" gehört zu "java.io.InputStream" und wird ja im Gegensatz zu "java.lang.*" nicht implizit importiert. Warum kommt dieses Programm hier trotzdem ohne import aus?

bei der import-Geschichte geht es nur um die Typen (also bspw.
Code:
InputStream
,
Code:
Scanner
,
Code:
List
usw....). Immer wenn du diese im Sourcecode schreibst, muss der Compiler wissen aus welchen package sie kommen (entweder über nen import oder indem du davor die package-Hierarchie schreibst...). Für methodenaufrufe usw.. brauchst du das nicht, der Compiler weiß ja von welchen typ die variable ist auf die read() verwendet ist...
 
G

gman

Gast
"read()" gehört zu "java.io.InputStream" und wird ja im Gegensatz zu "java.lang.*" nicht implizit importiert. Warum kommt dieses Programm hier trotzdem ohne import aus?

Weil du ja:

Java:
c = System.in.read();

verwendest. Der Compiler fängt bei "System" an zu suchen und da es in "java.lang" drin ist,
braucht es nicht importiert werden. Ein ähnliches Beispiel wurde ja schon gennant:

Java:
java.io.InputStream in = ...

Da "InputStream" wie du schon richtig erkannt hast nicht in "java.lang" drin ist schreibt man
hier "java.io" davor damit der Compiler weiss wo er suche muss.
Wenn man das nicht mitten im Code stehen haben will und auch nicht immer wiederholen will,
kann man das auch importieren. Damit ist dann "InputStream" für den Compiler bekannt.

Einiges wurde hier schon erklärt, aber ich dachte ich fass das mal zusammen.
 

Mischka

Aktives Mitglied
also ich weiss immernoch nicht wann wo welches paket importiert werden soll, obwohl ich schon das ein oder andere kleinere spiel programmiert habe. Im grunde ist es aber ganz einfach, aber trozdem ist das wissen meiner meinung nach kein grund sich hinzusetzten und irgentwas auswendig zu lernen

ich empfehle dir einfach die ide netbeans zu benutzten da man da mit dem hotkey strg+shift+i alle nötigen imports von netbeans machen lässt. (gibt es sicherlich auch in eclipse usw.)
 
M

Marcinek

Gast
Ja die IDEs können das alle.

Aber der TO weiß nicht wozu die importe gut sind, wann man sie verwendet und wann nicht.

Das ist nicht nur für die importe essentiell sondern auch bei Reflection oder wenn man in der IDE zuschnell war importiert man die falsche List. (awt != lang...).

Daher ist es imho wichtig sich damit zu beschäftigen, statt direkt die Arbeit von der IDE machen lassen. ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Java streams, wann nutze ich ::, also 2x Doppelpuntk bei Streams? Java Basics - Anfänger-Themen 5
D Wann genau nutze ich ein solches Interface? Java Basics - Anfänger-Themen 3
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
I Logik Zahlungsprozess - Wann Bestellobjekt anlegen? Java Basics - Anfänger-Themen 2
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
W Wann und warum hashcode und equals? Java Basics - Anfänger-Themen 14
W Wann Rückgabewerte 0, 1, -1? Java Basics - Anfänger-Themen 27
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
K In andere Zahlensysteme umwandeln, wann klappt immer der Trick mit log? Java Basics - Anfänger-Themen 6
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
F Wann ist es eine Instanz und wann nicht? Java Basics - Anfänger-Themen 1
C Instanzen, wann muss ich Instanzen erzeugen & wo?) Java Basics - Anfänger-Themen 23
S Wann Methode abstract? Java Basics - Anfänger-Themen 10
S Wann buffer löschen? Java Basics - Anfänger-Themen 5
R Wie überprüfen wann der User online oder offline ist? Java Basics - Anfänger-Themen 5
C Polymorphie Was genau ist Polymorphie und wann genau sollte man es verwenden? Java Basics - Anfänger-Themen 9
I Wann ist Client plattformunabhängig? Java Basics - Anfänger-Themen 22
M Best Practice Wann eine Methode schreiben ? Java Basics - Anfänger-Themen 14
K Warum funktioniert das und wann erden die Objektmethoden nun ausgeführt? Java Basics - Anfänger-Themen 7
IngoF Welches Event kommt wann? Java Basics - Anfänger-Themen 8
M Wann eigene implementierte HashCode Methode zwingend erforderlich? Java Basics - Anfänger-Themen 1
X Wann schreibt man diese Syntax zeichen { } Java Basics - Anfänger-Themen 8
O Wann nutzt man static? Java Basics - Anfänger-Themen 19
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
S Wann existiert eine Instanz (eigene Klasse) Java Basics - Anfänger-Themen 8
M Wann PATH und wann JAVA_HOME in Windows System 7 setzen? Java Basics - Anfänger-Themen 2
M Wann final verwenden? Java Basics - Anfänger-Themen 5
M Wann eine Wrapper Klasse verwenden und wann einen primitiven Datentypen? Java Basics - Anfänger-Themen 8
D Ab wann getter und setter Java Basics - Anfänger-Themen 2
B Erkennen, wann static oder nicht? Java Basics - Anfänger-Themen 7
E wann welche Konstanten verwenden? Java Basics - Anfänger-Themen 7
P Wann Byte-Stream und wann Character-Stream? Java Basics - Anfänger-Themen 11
T Vererbung Wann wird die Methode paint aufgerufen? Java Basics - Anfänger-Themen 4
M Wann statische Methoden/Attribute? Java Basics - Anfänger-Themen 2
vandread Java Wildcards - Wann super wann extends? Java Basics - Anfänger-Themen 2
K Wann Vererbung und wann Interface verwenden? Java Basics - Anfänger-Themen 12
K Wann genau brauche ich die Anweisung gleich null? Java Basics - Anfänger-Themen 10
B Wann toString() überschreiben? Java Basics - Anfänger-Themen 21
S OOP Wann Proxies und Interfaces? Java Basics - Anfänger-Themen 3
P Threads Wann läuft es parallel ab ? Java Basics - Anfänger-Themen 4
C Variablen Wann werden Instanzvariablen initalisiert? Java Basics - Anfänger-Themen 10
P Java Stream, wann welche Stream verwenden? Java Basics - Anfänger-Themen 3
T Ab wann ist es ein großes Projekt? Java Basics - Anfänger-Themen 35
N Bessere Performance durch final: wann denn überhaupt? Java Basics - Anfänger-Themen 28
D Wann genau abstrakte Klasse und wann ein Interface verwenden? Java Basics - Anfänger-Themen 4
A junit test wann verwendet man "was"? Java Basics - Anfänger-Themen 4
H Wann ein Objekt der Programmklasse in main anlegen Java Basics - Anfänger-Themen 2
G Wann ist ein == Vergleich bei Gleitkommazahlen fahrlässig? Java Basics - Anfänger-Themen 8
T Wann for und wann while?? Java Basics - Anfänger-Themen 35
-horn- Wann wird alles NaN erzeugt? Java Basics - Anfänger-Themen 22
S Wann wird eine Klasse geladen? Java Basics - Anfänger-Themen 17
C this - wann verwende ich das? Java Basics - Anfänger-Themen 10
T Threads - Ab wann wirds Kritisch?! Java Basics - Anfänger-Themen 7
M Wann muss man eine Variable mit set-/get-Methoden in eine Bean schreiben? Java Basics - Anfänger-Themen 19
G field public/private wann Java Basics - Anfänger-Themen 11
GambaJo Ab wann neue Klasse erzeugen? Java Basics - Anfänger-Themen 2
G Wann Arrays, wann Collections? Java Basics - Anfänger-Themen 36
GambaJo Wann try.catch nutzen? Java Basics - Anfänger-Themen 11
B objekt wann als final deklarieren? Java Basics - Anfänger-Themen 2
N Wann muss eine Methode - protected sein wann public wann. Java Basics - Anfänger-Themen 5
Y Wann / Wozu inner class Java Basics - Anfänger-Themen 3
K StringBuilder notwendig ab wann? Java Basics - Anfänger-Themen 42
S wann static Funktionen wann nicht Java Basics - Anfänger-Themen 6
N Wann und wie oft finalize Methode verwenden( überschreiben ) Java Basics - Anfänger-Themen 6
Bernasconi Programmierstil / Wann eine neue Datei? Java Basics - Anfänger-Themen 5
M wann, welche schleife Java Basics - Anfänger-Themen 3
M Ab wann ist die Datei sichtbar? Java Basics - Anfänger-Themen 3
G Herausfinden, wann mehrere Threads abgeschlossen sind Java Basics - Anfänger-Themen 3
G Überprüfen wann ein Dokument abläuft? Java Basics - Anfänger-Themen 3
N SAX, StAX, JDOM oder DOM , ab wann welches für XML Java Basics - Anfänger-Themen 14
M Wann ist ein Programm beendet? Java Basics - Anfänger-Themen 6
G Wann am besten getSize() aufrufen? Java Basics - Anfänger-Themen 6
I Festellen wann Methode in anderer Klasse fertig ist Java Basics - Anfänger-Themen 5
M wann statische klassen? Java Basics - Anfänger-Themen 14
M Wann ist initialisieren sinnvoll? Java Basics - Anfänger-Themen 4
B Wann Comparator und wann Comparable Java Basics - Anfänger-Themen 6
R Wann benutzt man << oder >> ? Java Basics - Anfänger-Themen 2
G Klassen: Wann initialisiere ich wo meine Variabeln Java Basics - Anfänger-Themen 6
berserkerdq2 Wo ist der SInn, dass man den Stream, den ich zum Schreiben nutze, outputstream nenne? Java Basics - Anfänger-Themen 5
A Wie nutze ich List<List<String>> Java Basics - Anfänger-Themen 4
N Bildbeispiel von Layout: wie nutze ich das GBLayout dafür? Java Basics - Anfänger-Themen 17
A Welches GUI nutze ich am Besten? Java Basics - Anfänger-Themen 7
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
F Import SSL Zertifikat in keystore Java Basics - Anfänger-Themen 10
M import com.sun.star.uno Java Basics - Anfänger-Themen 25
Darkherobrine9 Import klappt nicht Java Basics - Anfänger-Themen 7
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
java-starter Erste Schritte import von package Java Basics - Anfänger-Themen 4
J The import org.bukkit cannot be resolved Java Basics - Anfänger-Themen 3
E Paketstruktur und import Klauseln Java Basics - Anfänger-Themen 14
D import Befehle Java Basics - Anfänger-Themen 3
E Unterschied zwischen new und import Java Basics - Anfänger-Themen 5
O Package import-Klausel Java Basics - Anfänger-Themen 10
O extrends vs. import Java Basics - Anfänger-Themen 14
B Import Tabelle - Struktur durch User einstellbar Java Basics - Anfänger-Themen 4
W JavaFX import Fehler/Zellularautomaten Java Basics - Anfänger-Themen 1
T Erste Schritte JAR import Fehler Java Basics - Anfänger-Themen 2
Textsurfer Erste Schritte CSV Import Reader Writer Java Basics - Anfänger-Themen 0
S BufferedReader TextFields Import Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben