Why shortValue() method are concrete but intValue() is abstract into java.lang.Number?

前端 未结 3 1758
忘了有多久
忘了有多久 2021-01-18 10:33

I have read source code of java.lang.Number and I wondered why

  1. intValue()
  2. longValue()
  3. floatVa
相关标签:
3条回答
  • 2021-01-18 11:24

    According to the documentation of the Number class, the methods byteValue and shortValue were added first in JDK1.1. This is unlike the other "Value" methods which were already available in the very first JDK release. My assumption is that those two methods were made concrete in order to keep compatibility with existing (also non-standard) subclasses of Number, which would otherwise have been broken by the addition of new abstract methods in the superclass.

    0 讨论(0)
  • 2021-01-18 11:25

    byte and short are the lesser memory consuming versions, and since intValue is abstract, the implementation of intValue can be used for the byte and short. I think that's why they should have done it like that.

    0 讨论(0)
  • 2021-01-18 11:29

    @Anirudh sir, Small confirmation as you said that byte and short method are consuming the lesser memory to store the value, but it is not the right way to perform an operations by taking the same variable.. Because the byte variable will return you the negative value.

    //As per (step-1)Integer is the wrapper class object which is stored with 100000 value above range of byte. But the memory usage is less compare to int memory consumstion or range. because the int range is up to 600000 or smthng. remaining is waste of memory(apart from 100000), so you said that the int value(100000) if we convert to byte like(step-2) the more usage of memory will get reduced. But the value get stored inside the "b" variable is negative value. So here we cannot perform any operation with the original value(100000). Please suggest me if i am in wrong thought.

    step-1:- Integer io=new Integer(100000);

    step-2:- byte b=io.byteValue();

    0 讨论(0)
提交回复
热议问题