Java的数据类型

一、Java数据类型分为基本数据类型与引用数据类型。

Java数据类型.png

二、基本数据类型

★ 四种整数类型(byte、short、int、long)
    1、byte:1个字节,8 位   默认值为0
    2、short:2个字节,16 位  默认值为0
    3、int:4个字节,32 位   默认值为0
    4、long:8个字节,64 位  默认值为0L 【整数字面量默认都为 int 类型,所以在定义的 long 型数据后面加 L或 l】

★ 两种浮点数类型(float、double)
    1、float:4个字节,32 位    【后缀 F 或 f】   默认值为0.0F
    2、double:8个字节,16 位   【后缀 D 或 d】  默认值为0.0D

★ 一种字符类型(char):用于存储单个字符,内存中占2个字节,16位,默认值为\u0000。

★ 一种布尔类型(boolean):占1个字节,8位,用于判断真或假(仅有两个值,即true、false),默认值false

三、基本数据和包装类的区别

  ● 包装类可以为NULL,默认值为null,基本数据不可以;

  ● 包装类是对象,有方法,比如:toString(), valueOf(), hashCode()等

四、基本数据类型线程安全问题

1、在java中,除了long和double的8个字节、64位的变量外,其他的基本变量都是原子性的。 

2、java存储模型要求获取和存储操作都为原子性,但是对于非volatile的long和double变量,jvm允许将64位的读或写划分为两个32位的操作。
   如果读和写发生在不同的线程 ,就会出现线程安全问题

3、在多线程的情况下,就算除去long和double的其它变量是原子性的,也有可能会出现线程安全的问题,这个是线程可见性的问题,
   所以需要加上volatile声明才行,volatile修饰符是强制变量每次从内存中读取。

你可能感兴趣的:(Java的数据类型)