Springen naar inhoud

Booleans in java


  • Log in om te kunnen reageren

#1

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 25 augustus 2010 - 17:29

Hoi, ik zat nu al een tijdje te denken over de betekenis van de volgende regel Java:


x = x & y;

met x en y boolean.

Kan iemand me er even mee helpen alstublieft? Dat zou weeral een knoop oplossen ;)


alvast bedankt!
"C++ : Where friends have access to your private members." — Gavin Russell Baker.

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 25 augustus 2010 - 17:44

Hoi, ik zat nu al een tijdje te denken over de betekenis van de volgende regel Java:


x = x & y;

met x en y boolean.

Kan iemand me er even mee helpen alstublieft? Dat zou weeral een knoop oplossen ;)


alvast bedankt!

sla in x de waarde van (x AND Y) op, indien x al true is, moet y niet meer geevalueerd worden.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#3

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 25 augustus 2010 - 17:50

Nee, dat is nu net waar mijn verwarring zit. & is een bitwise operator, AND wordt toch voorgesteld door &&?

Of heb ik het totaal verkeerd?
"C++ : Where friends have access to your private members." — Gavin Russell Baker.

#4

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 25 augustus 2010 - 18:11

Nee, dat is nu net waar mijn verwarring zit. & is een bitwise operator, AND wordt toch voorgesteld door &&?

Ook, maar in Java worden booleans ook voorgesteld als 1'en en 0'en, net zoals in C, en de bitwise operator hebben ze dezelfde betekenis gegeven in C als in Java, dus ook voor die booleaanse waarden.

Maar, om syntaxfouten die wel compileren tegen te gaan, is de conversie tussen booleans en hun impliciete waarde niet meer mogelijk in Java. Een grote verbetering.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#5

JWvdVeer

    JWvdVeer


  • >1k berichten
  • 1114 berichten
  • Ervaren gebruiker

Geplaatst op 25 augustus 2010 - 18:16

Inderdaad heeft In fysic I trust gelijk. Bitwise operators worden altijd uitgevoerd i.t.t. gewone logical operators.

public static boolean sayHello(){
  System.out.println("Hello!);
  return true;
}

public static void main(){
  if(false && sayHello()); # Wordt niet uitgevoerd
  if(false & sayHello()); # Wordt wel uitgevoerd.
}

Vandaar dat men het soms ook wel long-circuit en short-circuit operatoren noemt (bitwise respectievelijk logisch).

Veranderd door JWvdVeer, 25 augustus 2010 - 18:16


#6

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 25 augustus 2010 - 18:16

EDIT, reeds nieuwe reactie geplaatst

Bedankt!

Veranderd door In fysics I trust, 25 augustus 2010 - 18:20

"C++ : Where friends have access to your private members." — Gavin Russell Baker.

#7

JWvdVeer

    JWvdVeer


  • >1k berichten
  • 1114 berichten
  • Ervaren gebruiker

Geplaatst op 25 augustus 2010 - 18:25

Maar, om syntaxfouten die wel compileren tegen te gaan, is de conversie tussen booleans en hun impliciete waarde niet meer mogelijk in Java. Een grote verbetering.

Waarom een verbetering? Is naar mijn mening enkel maar nadelig... ;)

#8

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 25 augustus 2010 - 18:34

Kan je het nog met expliciete cast?

Want ik vond het idd juist handig dat je 'evidente' waarden als 0 en 1 als boolean kan gebruiken...
"C++ : Where friends have access to your private members." — Gavin Russell Baker.

#9

JWvdVeer

    JWvdVeer


  • >1k berichten
  • 1114 berichten
  • Ervaren gebruiker

Geplaatst op 25 augustus 2010 - 18:39

Kan je het nog met expliciete cast?

Probeer het uit zou ik zeggen...

bedrag += (int) booleanValue * 500;

#10

In physics I trust

    In physics I trust


  • >5k berichten
  • 7384 berichten
  • Moderator

Geplaatst op 25 augustus 2010 - 18:46

Neen, dat lukt dus niet...
"C++ : Where friends have access to your private members." — Gavin Russell Baker.

#11

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 25 augustus 2010 - 18:59

Want ik vond het idd juist handig dat je 'evidente' waarden als 0 en 1 als boolean kan gebruiken...

Heb je al eens grotere projecten gemaakt in C, op een microprocessor zodat debuggen bijzonder moeizaam is, en na 2 dagen werken gevonden dat er ergens if(x=y) staat i.p.v. if(x==y)?

Wel, tot die tijd stel ik voor dat je meegaat met de algemene consensus op dat gebied ;) Het is een EXTREEM goede maatregel.

Veranderd door 317070, 25 augustus 2010 - 19:00

What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#12

JWvdVeer

    JWvdVeer


  • >1k berichten
  • 1114 berichten
  • Ervaren gebruiker

Geplaatst op 25 augustus 2010 - 19:02

en na 2 dagen werken gevonden dat er ergens if(x=y) staat i.p.v. if(x==y)?

Ja, al redelijk vaak. En heb jij ook een interpreter en compiler die dat gewoon netjes als warning afgeven? Zodat je daar tenminste vrij snel doorheen kunt scrollen in je IDE?

Wel, tot die tijd stel ik voor dat je meegaat met de algemene consensus op dat gebied

Tot die tijd vermoed ik dat het tijd is om gewoon gebruik te maken van de mogelijkheden die er zijn en gewoon zelf na te blijven denken ;).

#13

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 25 augustus 2010 - 19:04

Ja, al redelijk vaak. En heb jij ook een interpreter en compiler die dat gewoon netjes als warning afgeven? Zodat je daar tenminste vrij snel doorheen kunt scrollen in je IDE?

->Microprocessor. Ik ben al blij als ik de standaard IDE en compiler aan de praat krijg. ;)
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#14

JWvdVeer

    JWvdVeer


  • >1k berichten
  • 1114 berichten
  • Ervaren gebruiker

Geplaatst op 25 augustus 2010 - 19:08

->Microprocessor

Sorry, overheen gelezen. Tja, ik ben blij dat ik niet in die wereld zit. Want ik vermoed dat je mij nu gaat vertellen dat elke fabrikant zijn eigen intepreters en compilers heeft? En die waarschijnlijk gezien de beperkte oplage en de kostenreductie niet van de hoogste kwaliteit zijn. Of heb ik dat mis?

#15

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 25 augustus 2010 - 21:41

Edit: kleine flater, dat moet uiteraard microcontroller zijn. Microprocessoren is heel iets anders ;) Verder heb ik alleen nog maar met verschillende generaties PIC's moeten werken, waardoor ik altijd bij MPLABS terecht kon. Al heb ik gehoord dat de concurrentie ook niet veel soeps is.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures