Static

osion

Bekanntes Mitglied
Hallo miteinander :lol:

Ich bin mir nicht sicher ob ich static richtig verstehe.

Also static bindet eine Variabel oder Methoden in allen Klassen ein und die Methode oder Klasse kann in jeder Klasse einfach aufgerufen werden?

Beispiel
Methode static rechnen()

Kann in jeder Klasse aufgerufen werden (andere Package ausgenommen)?
Das gleiche mit Variabeln ja?
 

Timothy Truckle

Top Contributor
Also static bindet eine Variabel oder Methoden in allen Klassen ein
nein.
Code:
static
bedeutet, das diese Variable oder Methode ohne Objektkontext existiert. Die Konsquenz daraus ist, dass man sie über
Code:
static access
ansprechen kann, also
Code:
KlassenName.methode()
oder
Code:
KlassenName.variablenName
.


und die Methode oder Klasse kann [STRIKE]in[/STRIKE] aus jeder Klasse einfach aufgerufen werden?
Im printzip ja.
Dass solltest Du aber schnell wieder vergessen.
Du sollst mit Objekten arbeiten, nicht mit Klassen.

bye
TT
 

osion

Bekanntes Mitglied
Ich habe verschiedene ArrayList die eingelesen werden (eine ArrayList hat etwa 50'000 Einträge) und wenn ich die jedesmal wenn die gebraucht wird neu erstellen muss, ist das nicht perfomanced fördernd.

Ich kann jetzt einfach die ArrayList Static setzen und beim Programmanfang laden und für alle Klasse gebrauchen ohne Methodenaufruf?
 

Timothy Truckle

Top Contributor
Ich habe verschiedene ArrayList die eingelesen werden (eine ArrayList hat etwa 50'000 Einträge) und wenn ich die jedesmal wenn die gebraucht wird neu erstellen muss, ist das nicht perfomanced fördernd.

Ich kann jetzt einfach die ArrayList Static setzen und beim Programmanfang laden und für alle Klasse gebrauchen ohne Methodenaufruf?
Du kannst den Objekten, die mit der Liste arbeite müssen diese als Parameter im Konstruktor oder ihren Methoden mitgeben.

bye
TT
 

osion

Bekanntes Mitglied
Du kannst den Objekten, die mit der Liste arbeite müssen diese als Parameter im Konstruktor oder ihren Methoden mitgeben.

bye
TT

Wenn ich die Liste im Konstruktor mitgeben, dann erstellt er auch die Liste jedesmal neu und bei der Methode auch oder?

Die Frage ist ja, wenn du jedesmal Listen von (Gesamt) 500'000 Einträge machen musst, dann ist das ja Leistung Verschwendung und dann sollte die Liste auch nur einmal geladen werden.
 

Fab1

Top Contributor
Nein, er wird nicht immer neu erzeugt.

Man kann sich das so vorstellen. Du hast ein Auto, dieses wird getuned. Hierfür muss dieses Auto Objekt verschiedene Abteilungen durchlaufen.

Erstmal wird es in der Polierabteilung poliert,
dann in der Lackabteilung lackiert,
und am Ende in der Waschabteilung gewaschen.
Hierbei handelt es sich immer um das gleiche Auto, dieses wird also einfach rumgereicht, bis jeder fertig ist.

Und genau so läuft das bei deiner Liste ab. Du erzeugst ein Objekt davon und initialisierst dieses und anschließend schiebst du es einfach nur noch rum wo du es grad brauchst. Natürlich sollte man sind davor eine Struktur überlegen um keine Konstruktoren mit 100 Parametern zu haben, aber ich denke das Prinzip ist klar.


Um nochmal auf static zurückzukommen. Statische Klassen werden geladen sobald man sie einmal aufruft und bestehen solange das Programm läuft. Man sieht hier schon, das kann nicht Ressourcen sparend sein. Objekte hingegen kann man "relativ" gezielt wieder freigeben, in dem man diese auf "null" setzt. Den Rest erledigt der GC.
 

osion

Bekanntes Mitglied
Danke =)

Wieso sollte das passieren?

bye
TT

weil wenn die Methode durchgelaufen ist, alles gelöscht wird.:rtfm:


Noch eine andere Frage. Ich habe einen Scanner zum lesen gemacht (Datei A) und ein Filewriter zum Schreiben (Datei B). Ich muss ja noch zweimal eine File mit zwei namen geben, welche dem Reader und dem Schreiber übergeben werden. Wenn ich das ausführe ist es leer. Das schreiben oder das Lesen alleine funktioniert.

Meine Frage: Funktioniert das nicht weil Scanner und FileWriter/FileReader verschiedene Methoden sind und sich die Daten gar nicht übergeben oder weil ich zwei verschiedene File erstellt habe?
 

Timothy Truckle

Top Contributor
weil wenn die Methode durchgelaufen ist, alles gelöscht wird.:rtfm:
Die lokalen Referenzen und Variablen werden gelöscht, doch aber nicht die Liste, auf die hast Du doch in der aufrufenden Methode noch eine Referenz.:bloed:



Noch eine andere Frage. Ich habe einen Scanner zum lesen gemacht
selbst Schuld...:lol:

(Datei A) und ein Filewriter zum Schreiben (Datei B). Ich muss ja noch zweimal eine File mit zwei namen geben, welche dem Reader und dem Schreiber übergeben werden. Wenn ich das ausführe ist es leer. Das schreiben oder das Lesen alleine funktioniert.

Meine Frage: Funktioniert das nicht weil Scanner und FileWriter/FileReader verschiedene Methoden sind und sich die Daten gar nicht übergeben oder weil ich zwei verschiedene File erstellt habe?
Ich vermute mal in's Blaue, dass Du den Teil weg gelassen hast, in dem die Daten vom Scanner an den FileWriter weitergegeben werden.

bye
TT
 

osion

Bekanntes Mitglied
TT[/QUOTE]

Zitat: osion

Noch eine andere Frage. Ich habe einen Scanner zum lesen gemacht
selbst Schuld...
TT

Was ist so schlecht an Scanner?

Ich vermute mal in's Blaue, dass Du den Teil weg gelassen hast, in dem die Daten vom Scanner an den FileWriter weitergegeben werden.
TT

Der Scanner wird aufgerufen, welcher die Daten in einem String speichert und der String wird dem FileWriter übergeben.
 

Timothy Truckle

Top Contributor
Was ist so schlecht an Scanner?
Dass anscheined niemand wirklich damit umgehen kann. Es sieht einfach aus, aber man muss wissen, was im Hintergrung passiert, und das fürht gerade bei Anfängern zu Problemen.

Der Scanner wird aufgerufen, welcher die Daten in einem String speichert und der String wird dem FileWriter übergeben.
Code:
flush()
und
Code:
close()
aufgerufen?

bye
TT
 

osion

Bekanntes Mitglied
Na dannn...
Ohne den Code zu sehen kann man nur raten...

bye
TT

Ok...A B oder C?

Java:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;




public class QuelltextAutomatischAuslesen {

    static String ausgebenerText;
	static Scanner s = null;
	
	public static void main(String[] args)
	{


	
	int i = 1;
	while(i<72)
	{
		
	File text;
	text=new File("D:\\zb\\Freundin\\Wortliste\\a,"+i+".html");
	

	try {
		s = new Scanner(text);
	} catch (FileNotFoundException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}
	String ausgebenerText = null;


		while(s.hasNext())
		{
			
		ausgebenerText=s.nextLine();//.substring(82);
		schreiber();
		System.out.println(!ausgebenerText.equals(null));
		}

		i++;

	}
	s.close();
	}
	
	private static void schreiber()
	{
	FileWriter writerinInteresseSchreiben = null;
	File inInteresseSchreiben;

		
		
		inInteresseSchreiben = new File("D:\\zb\\Freundin\\Wortliste\\quelltext.txt");

		
		Scanner s = null;
		
			try {
				writerinInteresseSchreiben = new FileWriter(inInteresseSchreiben, false);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			while(ausgebenerText!=null)
			{
				
			ausgebenerText=s.nextLine();//.substring(82);
			
			System.out.println(!ausgebenerText.equals(null));
			
			if(!ausgebenerText.equals(""))
			{
				try {
					writerinInteresseSchreiben = new FileWriter(inInteresseSchreiben, false);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				try {
					writerinInteresseSchreiben.write(ausgebenerText);
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}


				try {
					writerinInteresseSchreiben.write(System.getProperty("line.separator"));
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
//				System.out.println(ausgebenerText);
			}
			
			
		
				try {
					writerinInteresseSchreiben.flush();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				try {
					writerinInteresseSchreiben.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			
		
			
	}
	}
 
Zuletzt bearbeitet:

osion

Bekanntes Mitglied
Hat Dir die NPE, die in Zeile 73 fliegt nicht zu denken gegeben?

bye
TT

Logo ^^ Ich habe sogar immer
Java:
    System.out.println(!ausgebenerText.equals(null));

ausgegeben. Na das kommt davon wenn man um 3 Uhr nachts noch das macht *schäm* :autsch:

Java:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;




public class QuelltextAutomatischAuslesen {


	
	public static void main(String[] args)
	{
		String ausgebenerText;
		Scanner s = null;

	
	int i = 1;
	while(i<72)
	{
		
	File text;
	text=new File("D:\\zb\\Freundin\\Wortliste\\a,"+i+".html");
	System.out.println("WERT I "+i);

	try {
		s = new Scanner(text);
	} catch (FileNotFoundException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}


		while(s.hasNext())
		{
			
		ausgebenerText=s.nextLine();//.substring(82);
		schreiber(ausgebenerText);
		System.out.println(ausgebenerText);
		}

		i++;
	}
	s.close();
	}
	
	private static void schreiber(String ausgebenerTex)
	{
	FileWriter writerinInteresseSchreiben = null;
	File inInteresseSchreiben;

		
		
		inInteresseSchreiben = new File("D:\\zb\\Freundin\\Wortliste\\quelltext.txt");
		
			try {
				writerinInteresseSchreiben = new FileWriter(inInteresseSchreiben, true);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		{
			
			System.out.println(!ausgebenerTex.equals(null));
			
			if(!ausgebenerTex.equals(""))
			{
				try {
					writerinInteresseSchreiben = new FileWriter(inInteresseSchreiben, true);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				try {
					writerinInteresseSchreiben.write(ausgebenerTex);
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}


				try {
					writerinInteresseSchreiben.write(System.getProperty("line.separator"));
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
//				System.out.println(ausgebenerText);
			}
			
			
		
				try {
					writerinInteresseSchreiben.flush();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				try {
					writerinInteresseSchreiben.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				ausgebenerTex="asfsafdsafdsaf";
			}
	}
	}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
A Instance methods should not write to "static" fields Java Basics - Anfänger-Themen 4
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
M static ArrayList in non-static Java Basics - Anfänger-Themen 12
B Static vs non static und Probleme daraus Java Basics - Anfänger-Themen 13
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
R UML-Bild (Erkennung ob static o. nicht) Java Basics - Anfänger-Themen 18
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2
B Static Attribute in einer Klasse, wie geht das? :O Java Basics - Anfänger-Themen 19
NaZuRe Geld(Wert) von der public static void main in die public static void Blackjack Java Basics - Anfänger-Themen 2
H Static Java Basics - Anfänger-Themen 5
K Ausgaben auf der Konsole (static Varible) Java Basics - Anfänger-Themen 9
S public static boolean Java Basics - Anfänger-Themen 4
Vamecruft Compiler-Fehler public static void zu static String ändern Java Basics - Anfänger-Themen 2
L non-static Fehler Java Basics - Anfänger-Themen 16
S Klassenmethode ohne static Java Basics - Anfänger-Themen 2
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
J Fehlermeldung unklar. non-static variable player0 cannot be referenced from a static context Java Basics - Anfänger-Themen 4
D Methoden Scannervariablen in static Methoden Java Basics - Anfänger-Themen 5
P non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 6
V the static method should be accessed is a static way Java Basics - Anfänger-Themen 6
NormanPatrickBenner static non-static Java Basics - Anfänger-Themen 82
N Erste Schritte "non-static method" oder "XYZ can not be resolved" Java Basics - Anfänger-Themen 21
B Email versenden, muss Methode static sein? Java Basics - Anfänger-Themen 7
R static in der Methode Java Basics - Anfänger-Themen 2
E Problem mit static Methode Java Basics - Anfänger-Themen 4
H Vererbung Static Scanner Objekt verwenden - von StdIn in einer importierten Klasse lesen Java Basics - Anfänger-Themen 10
M Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 10
I Abstrakte Klasse - static Attribute deklarieren Java Basics - Anfänger-Themen 14
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
J Frage zu: public static void main (String[]args) Java Basics - Anfänger-Themen 1
T Datentypen enum static Chaos (blutiger anfänger) Java Basics - Anfänger-Themen 5
D Das leidige Thema static.... Java Basics - Anfänger-Themen 15
Aprendiendo Interpreter-Fehler "non-static variable this cannot be referenced from a static context" Java Basics - Anfänger-Themen 2
T Problem mit static Java Basics - Anfänger-Themen 6
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
S Vererbung Zugriff auf Methode funktioniert nicht (static/non-static) Java Basics - Anfänger-Themen 3
snipesss Was kann 'static'? Java Basics - Anfänger-Themen 4
H Variablen error: non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 4
M public static int in ActionListener Java Basics - Anfänger-Themen 6
J static verschachtelte Klassen und innere Klassen Java Basics - Anfänger-Themen 1
H Nicht Static Funktion ohne Objekt aufrufen? Java Basics - Anfänger-Themen 6
E Objekte und static Java Basics - Anfänger-Themen 2
K Methoden Methoden in Methoden -> static oder nicht? Java Basics - Anfänger-Themen 7
D Erklärung static boolean Java Basics - Anfänger-Themen 6
L Was genau macht "public static void" ? Java Basics - Anfänger-Themen 12
U Erste Schritte cannot be referenced from a static context Java Basics - Anfänger-Themen 1
B ja ja schon wieder einer mit einer public static void main(string[] args) Frage... Java Basics - Anfänger-Themen 8
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
O Zu viel static im Projekt Java Basics - Anfänger-Themen 9
F Static final Klasse Java Basics - Anfänger-Themen 0
N static und Objekt kombiniert?!? Java Basics - Anfänger-Themen 3
O Wann nutzt man static? Java Basics - Anfänger-Themen 19
B Klassen Eigene "non static" Klasse in Main verwenden! Java Basics - Anfänger-Themen 12
D neue public static class variablen in array speichern? Java Basics - Anfänger-Themen 6
A Static variablen --- Anwendungsbereich Java Basics - Anfänger-Themen 11
B Erste Schritte Wie komme ich aus Static raus?!! Java Basics - Anfänger-Themen 4
V Static Methods Java Basics - Anfänger-Themen 5
W Compiler-Fehler "non-static method cannot be referenced"-Problem Java Basics - Anfänger-Themen 6
S OOP Klasse mit static-Eigenschaften - HashMap füllen Java Basics - Anfänger-Themen 6
3 OOP static class in einer Klasse Java Basics - Anfänger-Themen 6
B static individuell "vererben"? Java Basics - Anfänger-Themen 8
B Erkennen, wann static oder nicht? Java Basics - Anfänger-Themen 7
T Static Fehler Java Basics - Anfänger-Themen 1
R public static void Rückgabe Java Basics - Anfänger-Themen 5
P Compiler-Fehler public static void main, Grundloses Problem Java Basics - Anfänger-Themen 4
A Cannot make a static reference to the non-static field Java Basics - Anfänger-Themen 6
W Variablen Automatisch static? Java Basics - Anfänger-Themen 3
O Warum muss ich static? Java Basics - Anfänger-Themen 6
E non-static method und static context Java Basics - Anfänger-Themen 15
B non static interface Methode Java Basics - Anfänger-Themen 16
J KeyListener,MouseListener,MouseMotionListener und static Java Basics - Anfänger-Themen 7
S Static void Methode Java Basics - Anfänger-Themen 12
Q Unterschied zwischen static und keinem Modifier Java Basics - Anfänger-Themen 15
O Main-Methode static modifier umgehen Java Basics - Anfänger-Themen 10
J Variablen non-static variable Java Basics - Anfänger-Themen 2
P Erste Schritte public oder static oder wie? Java Basics - Anfänger-Themen 7
J static - Methoden Java Basics - Anfänger-Themen 22
X Erste Schritte Methode ohne Static Java Basics - Anfänger-Themen 4
B Classpath static block - Verwirrung Java Basics - Anfänger-Themen 2
S Methoden Warum ist sleep static? Java Basics - Anfänger-Themen 9
K static, non-static Krise Java Basics - Anfänger-Themen 4
R Schlüsselworte static Methoden und Imports Java Basics - Anfänger-Themen 10
M Methoden "Non-static method xy cannot be referenced from a static context" Java Basics - Anfänger-Themen 20
J Probleme mit static generische Klasse Java Basics - Anfänger-Themen 6
S Aufruf Einer Methode aus einer anderen Klasse - Static Fehler Java Basics - Anfänger-Themen 4
W Methodenaufruf innerhalb einer Klasse - static vs. this Java Basics - Anfänger-Themen 3
K Objekt erstellen - error: non-static variable this cannot be referenced from a static context Java Basics - Anfänger-Themen 17
H non-static method cannot be referenced from a static context Java Basics - Anfänger-Themen 2
Y Gebrauch von static Java Basics - Anfänger-Themen 29
L Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 6
T getClass() im static Kontext Java Basics - Anfänger-Themen 12
S Frage zu public static Java Basics - Anfänger-Themen 29
M Problem mit Static Method Java Basics - Anfänger-Themen 8
H Methoden Static ? Java Basics - Anfänger-Themen 10
K Erste Schritte Zugiff ohne static Java Basics - Anfänger-Themen 5
X Static char Problem Java Basics - Anfänger-Themen 11
H static final vs. final static Java Basics - Anfänger-Themen 3
K Variablen Cannot make a static reference to the non-static field time Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben