Archief - [JAVA]

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Pixie360

Legacy Member
Is er een manier om 2 elementen van het type String te vegelijken met elkaar?
Dus er moet gecontroleerd worden of bv. Theepot == Theepot.

thx

edit: crap kan m'n titel niet meer aanpassen :(

Yngwie

Legacy Member
Wanneer je de inhoud van strings wil vergelijken gebruik je de equals methode.

Code:
String str1 = "theepot";
String str2 = "theepot";
boolean check = str1.equals(str2);

Bubbling Zombie

Legacy Member
En omdat dit overduidelijk een les 1 in de java klas vraag is

met == ga je vergelijken of twee objecten hetzelfde zijn.
met .equals ga je vergelijken of de inhoud hetzelfde is.

Gurdt

Legacy Member
Bubbling Zombie zei:
En omdat dit overduidelijk een les 1 in de java klas vraag is

met == ga je vergelijken of twee objecten hetzelfde zijn.
met .equals ga je vergelijken of de inhoud hetzelfde is.

das nie echt waar wa gij zegt he
== vergelijk heel basisch de linker met de rechterkant

nu is het zo dat een string in java (in zowat alle programmeertalen denk ik) een verwijzing is naar een adres in het geheugen, en op die manier, dat da adres overeenkomt met het allereerste karakter van die string, daarom dat ge ook om alle karakters af te lopen, de string-lengte nodig hebt

== gaat dus die verwijzing (lees: pointer) naar de strings vergelijken, en die gaan enkel en alleen hetzelfde zijn als die ook echt naar dezelfde plaats in het geheugen wijzen

daarom moet ge equals gebruiken om de waarde achter die pointer te vergelijken (in C ofzo kunt ge *naam == *naam2 gebruiken, ma dan controleert ge enkel het eerste karakter, de functie equals gaat echt alle karakters vergelijken)

Pixie360

Legacy Member
Maar nu heb ik nog een vraagje, hoe kan je een arraylist afprinten van een object? Want heb al verschillende manieren geprobeert en nog steeds lukt het niet :(

Gurdt

Legacy Member
Pixie360 zei:
Maar nu heb ik nog een vraagje, hoe kan je een arraylist afprinten van een object? Want heb al verschillende manieren geprobeert en nog steeds lukt het niet :(

een arraylist?
en wat voor object, primitief of niet, een zelfgemaakte mss?

Gurdt

Legacy Member
dan zult ge een functie moeten schrijven die de array zal uitprinten
of begrijp ik uw begrip arraylist verkeerd?

forloRn_

Legacy Member
Eerst toString() overriden in de klasse van je objecten.

Dan:
Code:
System.out.println(list);
of:
Code:
for (Object item: list) {
  System.out.println(item);
}

Pixie360

Legacy Member
forloRn_ zei:
Code:
for (Object item: list) {
  System.out.println(item);
}

Kheb die maar dan krijg ik bij list de volgende fout in together:
"Type mismatch: cannot convert from element type Persoon to int"

m'n stukje code waarbij klanten de List is
Code:
        for (int teller : klanten) {
        	System.out.println(teller);
        }

micksk3

Legacy Member
Dat is omdat de elementen in je ArrayList van de klasse Persoon zijn (en niet int, zoals je zelf gebruikt. bij een for each lus heb je geen teller nodig)

Wat je dus moet doen :

for (Person persoon : klanten)
.....


alternatief met teller:
for (int teller = 0; teller < klanten.size(); teller++)
{
System.out.println(klanten.get(teller));
}



Wel zorgen dat je een methode toString() in je klasse Persoon hebt die bijvoorbeeld zegt:

public String toString()
{
return "naam : "+naam+" "+familienaam;
// wel zelf uw variabele namen invullen :p
}

forloRn_

Legacy Member
Zet eens @Override vóór die toString(), dat is een goede gewoonte.

Code:
@Override public String toString() {
  return "naam : "+naam+" "+familienaam;
}

Recipe4hate

Legacy Member
Override maakt duidelijk aan andere programmeurs dat je een bepaalde functie overschrijft. In Java geeft dit enkel een waarschuwing, en je zal geen compile errors krijgen als je er geen @Override bijschrijft.
Mag ik je aanraden ook eerst even te zoeken op google oid. vooraleer je direct vragen stelt? Opzoeken laat je beter onthouden ;)

Pixie360

Legacy Member
ah goed om te weten :D
En ik had er eigenlijk niet aan gedacht om eerst google te gebruiken :sad: m'n excuses :$

forloRn_

Legacy Member
Recipe4hate zei:
Override maakt duidelijk aan andere programmeurs dat je een bepaalde functie overschrijft. In Java geeft dit enkel een waarschuwing, en je zal geen compile errors krijgen als je er geen @Override bijschrijft.
Mag ik je aanraden ook eerst even te zoeken op google oid. vooraleer je direct vragen stelt? Opzoeken laat je beter onthouden ;)

Fout. Je zal inderdaad geen errors krijgen als je er geen @Override bij schrijft; belangrijker is dat je wél een error krijgt als je er @Override bij schrijft, en de method níet overridet (bijvoorbeeld als je een typfout maakt in de naam van de method).

breez

Legacy Member
die @override zorgt er voor dat de standaard implementatie van de toString functie "overschreven" wordt

als je in dat geval de tostring zal aanroepen zal ie niet de code uitvoeren die de programmeertaal zelf voorschrijft, maar in de plaats de code die je zelf geschreven hebt
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan