Why does 0 integer value behaves as false in if statement in groovy?











up vote
1
down vote

favorite












I wrote this part of code.



Integer value = 0
if(value)
{
print "true"
}
else
{
print "false"
}


And the output of code is false.
Can someone explain me why does Integer 0 value behaves as false in this if statement when it is not null and it exists?










share|improve this question


























    up vote
    1
    down vote

    favorite












    I wrote this part of code.



    Integer value = 0
    if(value)
    {
    print "true"
    }
    else
    {
    print "false"
    }


    And the output of code is false.
    Can someone explain me why does Integer 0 value behaves as false in this if statement when it is not null and it exists?










    share|improve this question
























      up vote
      1
      down vote

      favorite









      up vote
      1
      down vote

      favorite











      I wrote this part of code.



      Integer value = 0
      if(value)
      {
      print "true"
      }
      else
      {
      print "false"
      }


      And the output of code is false.
      Can someone explain me why does Integer 0 value behaves as false in this if statement when it is not null and it exists?










      share|improve this question













      I wrote this part of code.



      Integer value = 0
      if(value)
      {
      print "true"
      }
      else
      {
      print "false"
      }


      And the output of code is false.
      Can someone explain me why does Integer 0 value behaves as false in this if statement when it is not null and it exists?







      if-statement groovy






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 20 at 13:26









      Jakov Kusić

      622312




      622312
























          2 Answers
          2






          active

          oldest

          votes

















          up vote
          4
          down vote



          accepted










          When Groovy sees a variable in the context where a boolean value is expected, it invokes DefaultGroovyMethods.asBoolean(object) method to coerce given value to its boolean representation. For numbers following code gets executed:



          /**
          * Coerce a number to a boolean value.
          * A number is coerced to false if its double value is equal to 0, and to true otherwise,
          * and to true otherwise.
          *
          * @param number the number
          * @return the boolean value
          * @since 1.7.0
          */
          public static boolean asBoolean(Number number) {
          return number.doubleValue() != 0;
          }


          Source: src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java



          That is why Groovy coerce 0 to false and any non-zero number to true.



          There are other coercions that Groovy mades for you, e.g. empty list coerces to false, empty string coerces to false etc. I have written an article about some of them, you might find it useful.






          share|improve this answer




























            up vote
            5
            down vote













            It's part of the "Groovy Truth"




            5.7. Numbers



            Non-zero numbers are true.



            assert 1
            assert 3.5
            assert !0






            share|improve this answer





















              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53394027%2fwhy-does-0-integer-value-behaves-as-false-in-if-statement-in-groovy%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes








              up vote
              4
              down vote



              accepted










              When Groovy sees a variable in the context where a boolean value is expected, it invokes DefaultGroovyMethods.asBoolean(object) method to coerce given value to its boolean representation. For numbers following code gets executed:



              /**
              * Coerce a number to a boolean value.
              * A number is coerced to false if its double value is equal to 0, and to true otherwise,
              * and to true otherwise.
              *
              * @param number the number
              * @return the boolean value
              * @since 1.7.0
              */
              public static boolean asBoolean(Number number) {
              return number.doubleValue() != 0;
              }


              Source: src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java



              That is why Groovy coerce 0 to false and any non-zero number to true.



              There are other coercions that Groovy mades for you, e.g. empty list coerces to false, empty string coerces to false etc. I have written an article about some of them, you might find it useful.






              share|improve this answer

























                up vote
                4
                down vote



                accepted










                When Groovy sees a variable in the context where a boolean value is expected, it invokes DefaultGroovyMethods.asBoolean(object) method to coerce given value to its boolean representation. For numbers following code gets executed:



                /**
                * Coerce a number to a boolean value.
                * A number is coerced to false if its double value is equal to 0, and to true otherwise,
                * and to true otherwise.
                *
                * @param number the number
                * @return the boolean value
                * @since 1.7.0
                */
                public static boolean asBoolean(Number number) {
                return number.doubleValue() != 0;
                }


                Source: src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java



                That is why Groovy coerce 0 to false and any non-zero number to true.



                There are other coercions that Groovy mades for you, e.g. empty list coerces to false, empty string coerces to false etc. I have written an article about some of them, you might find it useful.






                share|improve this answer























                  up vote
                  4
                  down vote



                  accepted







                  up vote
                  4
                  down vote



                  accepted






                  When Groovy sees a variable in the context where a boolean value is expected, it invokes DefaultGroovyMethods.asBoolean(object) method to coerce given value to its boolean representation. For numbers following code gets executed:



                  /**
                  * Coerce a number to a boolean value.
                  * A number is coerced to false if its double value is equal to 0, and to true otherwise,
                  * and to true otherwise.
                  *
                  * @param number the number
                  * @return the boolean value
                  * @since 1.7.0
                  */
                  public static boolean asBoolean(Number number) {
                  return number.doubleValue() != 0;
                  }


                  Source: src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java



                  That is why Groovy coerce 0 to false and any non-zero number to true.



                  There are other coercions that Groovy mades for you, e.g. empty list coerces to false, empty string coerces to false etc. I have written an article about some of them, you might find it useful.






                  share|improve this answer












                  When Groovy sees a variable in the context where a boolean value is expected, it invokes DefaultGroovyMethods.asBoolean(object) method to coerce given value to its boolean representation. For numbers following code gets executed:



                  /**
                  * Coerce a number to a boolean value.
                  * A number is coerced to false if its double value is equal to 0, and to true otherwise,
                  * and to true otherwise.
                  *
                  * @param number the number
                  * @return the boolean value
                  * @since 1.7.0
                  */
                  public static boolean asBoolean(Number number) {
                  return number.doubleValue() != 0;
                  }


                  Source: src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java



                  That is why Groovy coerce 0 to false and any non-zero number to true.



                  There are other coercions that Groovy mades for you, e.g. empty list coerces to false, empty string coerces to false etc. I have written an article about some of them, you might find it useful.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 20 at 13:31









                  Szymon Stepniak

                  16.5k83062




                  16.5k83062
























                      up vote
                      5
                      down vote













                      It's part of the "Groovy Truth"




                      5.7. Numbers



                      Non-zero numbers are true.



                      assert 1
                      assert 3.5
                      assert !0






                      share|improve this answer

























                        up vote
                        5
                        down vote













                        It's part of the "Groovy Truth"




                        5.7. Numbers



                        Non-zero numbers are true.



                        assert 1
                        assert 3.5
                        assert !0






                        share|improve this answer























                          up vote
                          5
                          down vote










                          up vote
                          5
                          down vote









                          It's part of the "Groovy Truth"




                          5.7. Numbers



                          Non-zero numbers are true.



                          assert 1
                          assert 3.5
                          assert !0






                          share|improve this answer












                          It's part of the "Groovy Truth"




                          5.7. Numbers



                          Non-zero numbers are true.



                          assert 1
                          assert 3.5
                          assert !0







                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Nov 20 at 13:31









                          cfrick

                          18k13452




                          18k13452






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.





                              Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                              Please pay close attention to the following guidance:


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53394027%2fwhy-does-0-integer-value-behaves-as-false-in-if-statement-in-groovy%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              Feedback on college project

                              Futebolista

                              Albești (Vaslui)