Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #32975

Re: Java primitive variable objects

Path csiph.com!news.mixmin.net!news.albasani.net!.POSTED!not-for-mail
From Jan Burse <janburse@fastmail.fm>
Newsgroups comp.lang.java.programmer
Subject Re: Java primitive variable objects
Date Mon, 2 Nov 2015 22:46:14 +0100
Organization albasani.net
Lines 119
Message-ID <n18lj7$1it$1@news.albasani.net> (permalink)
References <33c95894-2638-4484-af5d-545701d34372@googlegroups.com>
Mime-Version 1.0
Content-Type text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding 7bit
X-Trace news.albasani.net SswwRNVEDHrWB5A3+kRRaB8yt1BuLjR7O5m9mRFNBjuEj90X4/+cj1aUfsR1xMVClSeA/XTSihqNwP6FJ9j4xg==
NNTP-Posting-Date Mon, 2 Nov 2015 21:46:15 +0000 (UTC)
Injection-Info news.albasani.net; logging-data="/c3kGWCXtUAZD4LiH4K1qWsMoYQdKdDsqz46JgYjRdWBigntuFloxqQIajDsq/MBL7idXL0ZBd063kjnpUdbxcK1DLJMT6Md4WmTPYgCnfxqHvytBSeqvhbwK0JNS6bt"; mail-complaints-to="abuse@albasani.net"
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0 SeaMonkey/2.38
In-Reply-To <33c95894-2638-4484-af5d-545701d34372@googlegroups.com>
Cancel-Lock sha1:jhMzYSvyC7/uxKdELa+fuLZxRas=
Xref csiph.com comp.lang.java.programmer:32975

Show key headers only | View raw


Hi,

Switch off autoboxing and unboxing, and you can't
compile most of your stuff below. Which explains
the behaviour.

Bye

P.S.: BTW autoboxing has improved so that
you can even compile and execute the
following code:

     public static void p(Number n) {
         System.out.println("n.getClass()="+n.getClass());
     }

     public static void main(String[] args) {
         p((byte)1);
         p((short)1);
         p(1);
         p(1L);
         p(0.1);
         p(0.1f);
     }

The result will be:

n.getClass()=class java.lang.Byte
n.getClass()=class java.lang.Short
n.getClass()=class java.lang.Integer
n.getClass()=class java.lang.Long
n.getClass()=class java.lang.Double
n.getClass()=class java.lang.Float

But you wont be able to compile:

        p('A');

P.P.S.: It is recommended to call Integer.valueOf()
and Long.valueOf() instead of new Integer() or new Long(),
since both will give cached value objects for small ranges.

There are also Double.valueOf() and Float.valueOf(),
but I havent seen that they returned cached value
objects.

Eric Douglas schrieb:
> I just discovered something which created a minor problem in my class.  What would be the best way to solve it?
>
> I have some constant values defined such as this
> public static final int AVALUE = 1;
>
> some methods in the class have conditions defined such as this
> if (myValue == MyClass.AVALUE) {
>
> I'm passing in myValue as Integer with a possibility it could be null.
> I hadn't tested these methods with the null value so I didn't realize it actually gets an error.
>
> This code
>            Integer x = 1;
>            Integer o = 1;
>            if (x == o) {
>                 System.out.println("equal");
>            } else {
>                 System.out.println("not");
>            }
> prints "equal".
> This code
>            Integer x = new Integer(1);
>            Integer o = 1;
>            if (x == o) {
>                 System.out.println("equal");
>            } else {
>                 System.out.println("not");
>            }
> prints "not".
> This code
>            Integer x = new Integer(1);
>            int o = 1;
>            if (x == o) {
>                 System.out.println("equal");
>            } else {
>                 System.out.println("not");
>            }
> prints "equal".
> This code
>            Integer x = null;
>            int o = 1;
>            if (x == o) {
>                 System.out.println("equal");
>            } else {
>                 System.out.println("not");
>            }
> gets a NullPointerException on the if.
> Of course Eclipse at this point knows x is null and shows a warning on the if, but if you break it out as the real code would be, it compiles without error and just crashes when you run.
>
>       public static void main(String[] args) {
>            Integer x = null;
>            checkThis(x);
>       }
>       public static void checkThis(final Integer checkMe) {
>            int o = 1;
>            if (checkMe == o) {
>                 System.out.println("equal");
>            } else {
>                 System.out.println("not");
>            }
>       }
>
> Solutions?
> 1) Change all the constants to objects
> public static final Integer AVALUE = 1;
>
> 2) Add null checks to all conditions
> if (checkMe != null && checkMe == o) {
>
> Is there a third option?  Is there a difference in declaring static int constants versus Integers for memory use, performance?
>

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Java primitive variable objects Eric Douglas <e.d.programmer@gmail.com> - 2015-11-02 10:11 -0800
  Re: Java primitive variable objects Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-11-02 14:15 -0500
    Re: Java primitive variable objects Eric Douglas <e.d.programmer@gmail.com> - 2015-11-02 13:03 -0800
      Re: Java primitive variable objects Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-11-02 16:29 -0500
  Re: Java primitive variable objects Jan Burse <janburse@fastmail.fm> - 2015-11-02 22:46 +0100
    Re: Java primitive variable objects Jan Burse <janburse@fastmail.fm> - 2015-11-02 22:52 +0100
    Re: Java primitive variable objects Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-11-02 17:47 -0500
  Re: Java primitive variable objects Joerg Meier <joergmmeier@arcor.de> - 2015-11-05 22:19 +0100
    Re: Java primitive variable objects Eric Douglas <e.d.programmer@gmail.com> - 2015-11-05 13:31 -0800
      Re: Java primitive variable objects Arne Vajhøj <arne@vajhoej.dk> - 2015-11-07 22:21 -0500
        Re: Java primitive variable objects Eric Douglas <e.d.programmer@gmail.com> - 2015-11-09 04:52 -0800
          Re: Java primitive variable objects Jerry Stuckle <jstucklex@attglobal.net> - 2015-11-09 08:54 -0500
            Re: Java primitive variable objects Eric Douglas <e.d.programmer@gmail.com> - 2015-11-09 07:27 -0800
              Re: Java primitive variable objects Jerry Stuckle <jstucklex@attglobal.net> - 2015-11-09 10:51 -0500
                Re: Java primitive variable objects Eric Douglas <e.d.programmer@gmail.com> - 2015-11-09 08:28 -0800
                Re: Java primitive variable objects Jerry Stuckle <jstucklex@attglobal.net> - 2015-11-09 11:57 -0500
                Re: Java primitive variable objects Eric Douglas <e.d.programmer@gmail.com> - 2015-11-09 10:13 -0800
                Re: Java primitive variable objects Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-11-09 13:28 -0500
                Re: Java primitive variable objects Jerry Stuckle <jstucklex@attglobal.net> - 2015-11-09 14:53 -0500
                Re: Java primitive variable objects Nigel Wade <nmw@ion.le.ac.uk> - 2015-11-10 09:27 +0000
                Re: Java primitive variable objects "Jeffrey H. Coffield" <jeffrey@digitalsynergyinc.com> - 2015-11-09 10:44 -0800
                Re: Java primitive variable objects Martin Gregorie <martin@address-in-sig.invalid> - 2015-11-09 18:59 +0000
                Re: Java primitive variable objects Jerry Stuckle <jstucklex@attglobal.net> - 2015-11-09 15:02 -0500
                Re: Java primitive variable objects Martin Gregorie <martin@address-in-sig.invalid> - 2015-11-09 22:57 +0000
                Re: Java primitive variable objects Jerry Stuckle <jstucklex@attglobal.net> - 2015-11-09 19:16 -0500
                Re: Java primitive variable objects Arne Vajhøj <arne@vajhoej.dk> - 2015-11-09 20:55 -0500
                Re: Java primitive variable objects Jerry Stuckle <jstucklex@attglobal.net> - 2015-11-09 22:13 -0500
                Re: Java primitive variable objects Arne Vajhøj <arne@vajhoej.dk> - 2015-11-09 20:40 -0500
                Re: Java primitive variable objects Jerry Stuckle <jstucklex@attglobal.net> - 2015-11-09 22:23 -0500
          Re: Java primitive variable objects Martin Gregorie <martin@address-in-sig.invalid> - 2015-11-09 14:00 +0000
            Re: Java primitive variable objects Eric Douglas <e.d.programmer@gmail.com> - 2015-11-09 07:18 -0800
              Re: Java primitive variable objects Arne Vajhøj <arne@vajhoej.dk> - 2015-11-09 20:43 -0500
          Re: Java primitive variable objects Arne Vajhøj <arne@vajhoej.dk> - 2015-11-09 19:38 -0500
            Re: Java primitive variable objects Jerry Stuckle <jstucklex@attglobal.net> - 2015-11-09 20:26 -0500
              Re: Java primitive variable objects Martin Gregorie <martin@address-in-sig.invalid> - 2015-11-10 02:10 +0000
                Re: Java primitive variable objects Jerry Stuckle <jstucklex@attglobal.net> - 2015-11-09 22:12 -0500
                Re: Java primitive variable objects Martin Gregorie <martin@address-in-sig.invalid> - 2015-11-10 13:01 +0000
                Re: Java primitive variable objects Jerry Stuckle <jstucklex@attglobal.net> - 2015-11-10 12:23 -0500
                Re: Java primitive variable objects Eric Douglas <e.d.programmer@gmail.com> - 2015-11-10 10:10 -0800
                Re: Java primitive variable objects Arne Vajhøj <arne@vajhoej.dk> - 2015-11-10 22:08 -0500
                Re: Java primitive variable objects Martin Gregorie <martin@address-in-sig.invalid> - 2015-11-10 20:05 +0000
                Re: Java primitive variable objects Eric Douglas <e.d.programmer@gmail.com> - 2015-11-10 13:21 -0800
                Re: Java primitive variable objects Martin Gregorie <martin@address-in-sig.invalid> - 2015-11-10 23:30 +0000
                Re: Java primitive variable objects Jerry Stuckle <jstucklex@attglobal.net> - 2015-11-10 20:58 -0500
                Re: Java primitive variable objects Gene Wirchenko <genew@telus.net> - 2015-11-10 22:30 -0800
                Re: Java primitive variable objects Arne Vajhøj <arne@vajhoej.dk> - 2015-11-10 21:58 -0500
              Re: Java primitive variable objects Arne Vajhøj <arne@vajhoej.dk> - 2015-11-10 21:56 -0500
                Re: Java primitive variable objects Jerry Stuckle <jstucklex@attglobal.net> - 2015-11-10 22:19 -0500
                Re: Java primitive variable objects Arne Vajhøj <arne@vajhoej.dk> - 2015-11-10 22:42 -0500
                Re: Java primitive variable objects Jerry Stuckle <jstucklex@attglobal.net> - 2015-11-10 23:07 -0500
            Re: Java primitive variable objects Eric Douglas <e.d.programmer@gmail.com> - 2015-11-10 06:06 -0800
  Re: Java primitive variable objects Lew <lewbloch@gmail.com> - 2015-11-16 14:47 -0800

csiph-web