2011-07-28 21 views
16

Aşağıdaki satırda return(!variable); gösteriliyor ünlem işareti değişkeni ne yapar?anlamı! Java sözdizimi

return(!weekday || vacation); 
+4

Muhtemelen de bu yararlı bulabilirsiniz: http://download.oracle.com/javase/tutorial/java/nutsandbolts/operators.html – biziclop

+5

Neden bu downvoted inkar görmüyorum. Bir yeni kullanıcı için, Google'da arama yapmak zor. Eksi ile mücadele etmek için – helpermethod

+3

+1. Soruyla ilgili yanlış bir şey göremiyorum. –

cevap

10

Java Dili şartnamenin Section 15.15.6 tanımlanan bir boolean DEĞİL operatör vardır. truefalse ve falsetrue'u yapar. Peki o Dönüş ifadesi yapıyor olacak bir boolean dönüyor trueeğer ikisinden biriweekday olduğunu false ("hafta içi değil") veya (||) vacationtrue olduğunu. weekdaytrue ve vacationfalse olup olup olmadığı false olacaktır.

11

! karakteri mantıksal bir olumsuzlamadır. Bu resmi adın, "mantıklı" olmadığına inanıyorum. Mantıksal olarak, !true == false ve !false == true.

gibi Platin Azure yorumlarda, bu operatörün sadece boolean tiplerine uygulanabilir söyledi.

+1

Spesifik olarak mantıksal olumsuzluk - yani, eğer bir "doğru" değeri verilirse, "yanlış" dönecek ve "yanlış" verilirse 'değeri, true 'döndürecektir. Java, '' 'operatörünün' 'dır '' olmayan türler üzerinde kullanılmasına izin vermez. –

+0

Mantıksal Tamamlayıcı İşleçleri (Java Language Specification 15.15.6) 'Boole' ve 'Boole' türlerine uygulanabilir! –

+0

@Carlos Otomatik kutulama ve otomatik kutulama ile, hem ilkel hem de nesne türlerine çok sayıda operatör uygulayabilirsiniz. Örneğin, '+' 'tamsayı '' tamsayı 'gibi uygulanabilir. Ama bu tamamen farklı bir tartışma. –

1

O zaman NOT weekday (false) anlamına gelir. !, olumsuzlama anlamına gelir.

5

! olumsuzluk ifade eder. Temel olarak, "Tamam, öyleyse takip eden her şey, eğer doğruysa, yanlış geri dönerse, yanlış geri dönün." Bu durumda (! sadece Java boolelerde üzerinde çalışacak), iade olur: Bir haftanın günü değil veya tatil olduğunu

dönüş.

2

Tüm operatör sorularınız Java tutorial numaralı telefondan yanıtlanabilir. !

+2

evet, ancak Stackoverflow daha iyidir [:-) –