Object x与基本类型

这几天看《ThinkInJava》的时候发现作者大大的很多代码方法中都有使用参数:public void add(Object x){.....}。

后来查了一下,发现如下内容:

       Object类是Java所有类的超类,在Java中所有类都是由它扩展来的,可以用Object类型的变量来引用(接收)任意类型的对象.但要想对接收的对象进行具体操作,就需要进行类型转换,将Object类型转换为接收的对象的类型.在Java中只有基本数据类型不是对象,其他类型都扩展于Object.

后来又去查了相关博主的文章:

https://www.cnblogs.com/mataoshou/p/10819586.html

谢谢作者君的分享!

以下为文章内容:

1、基本类型

    Java中有8种基本类型,分为4类,分别为:

    整型:包括  byte 、 short、 int 、 long

    泛型:float、double

    字符型:char

 布尔型:boolean

 

2、基本类型长度及默认值

   

名称

长度(字节)

默认值

取值范围

byte

1

0

-128~ 127

short

2

0

-32768 ~ 32767

int

4

0

-2147483648~2147483647

long

8

0

-9223372036854774808~9223372036854774807

float

4

0.0

3.402823e+38~1.401298e-45(e+38 表示乘以10的38次方,而e-45 表示乘以10的负45次方)

double

8

0.0

1.797693e+308~4.9000000e-324

char

2

\u000

 

boolean

官方没有明确定义长度

flase

true  false

 

   

3、包装类型

 

基本类型

包装类型

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

char

Character

boolean

Boolean

 

4、拆箱装箱

    拆箱,即,把基包装类型转换为基本类型

    装箱,即,基本类型转换为对应的包装类型。

    如:Integer no = 1;  //自动装箱

 Integer no2 = new Integer(2); //装箱

 

 自动装箱的实际操作对应  Integer.valueOf(1);

 在java文件生成class文件过程中会自动修改为Integer.valueOf(1),可以通过反编译工具查看。

 

5、注意事项

    1)包装类型的比较不要使用==

       如  Integer no1=10;Integer no2 =10;  no1==no2;返回结果为true

           Integer no1=200;Integer no2 =200;  no1==no2;返回结果为false

   Byte、Short、Integer、Long、Character的定义中都有一个缓存机制,-128~127对应的对象会缓存到缓存中,调用valueOf()方法时,会先判断数据是否在这个范围内,如果在范围内,返回缓存对象,如果超出范围,新建一个对象返回。

   所以在这个范围内的数值,用==比较会返回true。否则会引起一些间歇性的bug,很难定位。

    2)java中的基本类型长度不会改变,在c、c++和c#中基本类型的长度会根据编辑器的位数变化,在java中不会变化。

 3)boolean官方没有规定长度,实际的占用空间长度和虚拟机有关系。

 4)基本类型在虚拟机中是存储在栈中。

你可能感兴趣的:(JAVA,Object,x,基本类型)