Java基本类型

1.每种类型的声明方式、占多少字节、取值范围

/** 提示: 1个字节=8个二进制数空间,8个二进制数的首位(符号位)是判断是否为正数,0为正数,1为负数,其他七位数是存储。*/

        //整数型
        byte a = 0;     /** byte类型占1个字节,取值范围为 -128到127的范围, 默认值为0 */
        short b = 0;    /** short类型占2个字节,取值范围为-2^15到正的( 2^15)-1.默认值为0 */
        int c = 0;      /** int类型占4个字节,取值范围为-2^31到2^31-1, 默认值为0 */
        long d = 0L;    /** long类型占8个字节,取值范围为-2^63到2^63-1, 默认值为0L */

        //浮点型
        float e = 0.0f;    /** float类型占4个字节,Java中最多显示7位小数,默认值为0.0f */
        double f = 0.0d;   /** double类型占8个字节,Java中最多显示15位小数,默认值为0.0d。*/

        //字符型
        char g = ' ';   /** char类型占2个字节。默认值为null(空的对象,不是没有)*/

        //布尔型
        boolean h = false;
        /** 1.单个的boolean 类型变量在编译的时候是使用的int 类型。
         boolean a=true;//这个a在JVM中占4个字节即:32位。
         2.boolean 类型的数组时,在编译的时候是作为byte array来编译的所以boolean 数组里面的每一个元件占一个字节,
         boolean[] b = new boolean[10];//数组时,每一个boolean在JVM中占一个字节。*/

2. 相互转化

类型转换路线:byte->short->int->long->float->double
char->int;int->char;-------boolean类型不能转化。
取值范围小的可以自动转化为大的,取值范围大的转换成小的需要强制转化,而且可以会存在数据溢出或精度下降,例如:
在这里插入图片描述
在这里插入图片描述

3.基本类型的存放位置

要看基本类型的存放位置,主要看基本类型是在哪里声明的。

  1. 在内部方法中时,存放的位置是在栈中。
void method(){
   int a = 3;
}
  1. 在类中的定义时,是随着类存放在堆中的
class Test {
    int a = 1;
}

理解:堆 是所有线程共享的内存区域,栈 是每个线程独享的,如果将一个类的实例变量放在栈内,那么就不存在多个线程访问同一个对象资源了,这显然是不对的,所以实例变量要在堆上创建,也不是线程安全的。
但是对于局部变量,是在栈上创建的,每一次方法调用创建一个帧,独享一份内存区域,其他的线程是不会访问到该线程的资源,在 栈上创建也会减轻GC的压力,随着该方法的结束,帧出栈,相对应的内存消除,这种局部变量占用的内存自然就消失了,因此局部变量是线程安全的。

思考:基本类型如上,那引用类型呢?

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值