• piccolo@sh.itjust.works
      link
      fedilink
      arrow-up
      4
      ·
      2 months ago

      Java has support for unsigned integers since java 8… its just in java’s fashion, they are methods bolted onto the standard Integer class instead of proper unsigned primitives.

      • Valmond@lemmy.dbzer0.com
        link
        fedilink
        arrow-up
        2
        arrow-down
        5
        ·
        2 months ago

        Yeah so it doesn’t. That’s just a horrid mess.

        If you’d know your history, uints were forgotten in the first version, and never added.

        • piccolo@sh.itjust.works
          link
          fedilink
          arrow-up
          3
          arrow-down
          1
          ·
          2 months ago

          Eh. I rarely use unsigned integers, and using 4 extra bytes for large numbers is nothing when the jvm is already chugging RAM… So lacking uint isnt that big deal. Though, why is a byte signed…? That is beyond me.

          • Valmond@lemmy.dbzer0.com
            link
            fedilink
            arrow-up
            1
            arrow-down
            1
            ·
            2 months ago

            So you don’t need it means it’s okay a major feature is just forgotten for 20 years? I’m not even criticising you, I’m criticising the language lol.

            • piccolo@sh.itjust.works
              link
              fedilink
              arrow-up
              4
              ·
              2 months ago

              Iirc, the decision was made for performance reasons and reducing programmer confusion. Even in the .net world, unsigned ints are against the CLS spec and using them in c# has compiler warnings. Really the only reason to care about unsigned ints is reducing memory footprint…which case Java shouldnt be your choice lang to begin with.

              • Valmond@lemmy.dbzer0.com
                link
                fedilink
                arrow-up
                1
                ·
                2 months ago

                I understand that reasoning but the dude literally forgot to add uints. Which is funny I think. Then they never fixed it (this math library stuff is just a weird band aid).

                Today it is less important I guess, but back then it sure wasn’t. I also don’t really care what C# specs say, that has nothing to do with the story IMO.

        • Scoopta@programming.dev
          link
          fedilink
          arrow-up
          2
          arrow-down
          1
          ·
          2 months ago

          I have written a lot of code that would benefit from primitive unsigned ints…and while it is a little more work to do it java’s way, it’s definitely not a horrid mess

            • Scoopta@programming.dev
              link
              fedilink
              arrow-up
              2
              ·
              2 months ago

              Eh, if you use the API, I just go up a size and use bitwise operators, the JIT is fast enough that it’s usually not a problem. Definitely not 100x slower

              • Valmond@lemmy.dbzer0.com
                link
                fedilink
                arrow-up
                1
                ·
                2 months ago

                If you do C bitwise operations on big chunks of data (like encryption) Java is probably more than 1000 times slower 😁

                • Scoopta@programming.dev
                  link
                  fedilink
                  arrow-up
                  1
                  ·
                  2 months ago

                  We’re not comparing to C, we’re comparing to a theoretical java that has primitive unsigned ints since that was your original complaint. Ofc C is faster, java is faster to write than C though. I write both, there are different tools for different jobs

    • Custodian6718@programming.dev
      link
      fedilink
      arrow-up
      1
      arrow-down
      1
      ·
      1 month ago

      They are niche and not that useful for General Programming tasks tbh. I get unsigned bytes but for ints just take a Long ngl