欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java基础 之 数据类型【二】(自动类型转换和空Object对象)

程序员文章站 2022-03-24 17:23:32
...

三、自动转换类型

1、定义

  • 在java 程序中,不同的基本类型的值经常需要进行相互类型转换,类型转换分为自动类型转换强制类型转换。
  • 自动类型转换是指取值范围小的类型,自动转换为取值范围大的类型。

2、自动转换类型图

  • 转换原则为从低精度向高精度转换。
  • ——红色箭头为无数据丢失的自动转换。
  • ——蓝色箭头为在自动转换时可能会有精度的损失
    java基础 之 数据类型【二】(自动类型转换和空Object对象)

3、注意

  • 布尔类型boolean占有一个字节,由于其本身所代码的特殊含义,boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换), 否则,将编译出错。
  • java中整数类型默认是int类型,小数类型默认是double类型。

4、栗子

class FJC
{
    public static void main(String[] args)
    {
        int a = 5;
        byte b = 6;
        //自动转换
        int c = a + b;
        System.out.println(c);
    }
}
  • 分析:
  • a是int类型,b是byte类型,当二者进行加法运算时(根据同类型相加结果还是同类型,并且低类型的先转换成高类型的然后在进行运算,最后结果也是同类型的才行)由于int的范围比byte的取值范围大这个时候jvm会自动将b转换成int类型

四、空Object对象

1、定义

  • 空Object对象指的是保存在堆中没有任何属性的对象。

2、大小

  • 在Java中,一个空的Object对象的大小是8Byte
  • Object ob =new Object();所占空间为4byte+8byte
  • 4byte是上面部分所说的java栈中保存引用的所需要的空间。
  • 8byte是java堆中对象的信息,所有的java非基本类型的对象都需要默认继承Object对象,因此不管怎么样的java对象,其大小都必须大于8byte
  • Java在对对象内存分配时都是以8的整数倍来分,不是整数倍的需要找就近的8的整数倍

3、栗子

Class NewObject {
    int count;
    boolean flag;
    Object ob;
}
  • 分析:
  • 空对象大小(8byte)+int大小(4byte)+Boolean大小(1byte)+空Object引用的大小(4byte)=17byte。但是因为Java在对对象内存分配时都是以8的整数倍来分,因此大于17byte的最接近8的整数倍的是24,因此此对象的大小为24byte

【END】初次学习如有不正指出请见谅,欢迎留言批评指出。