Java数据类型总结

Java数据类型总结 


java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 
1、整数:包括int,short,byte,long 
2、浮点型:float,double 
3、字符:char 
4、布尔:boolean

 

基本型别 大小 最小值 最大值
boolean ----- ----- ------
char 16-bit Unicode 0 Unicode 2^16-1
byte 8-bit -128 +127
short 16-bit -2^15 +2^15-1
int 32-bit -2^31 +2^31-1
long 64-bit -2^63 +2^63-1
float 32-bit IEEE754 IEEE754
double 64-bit IEEE754 IEEE754
void      


即使你可能知道 IEEE 浮点数,你可能也从来没有逐个比特地处理过这类数据。下面我将向你展示如何逐个比特地处理 IEEE 浮点数,下次在你的 Java 项目需要从比特序列创建浮点数时,或者从浮点数创建比特序列时,你就知道Float 类可以为完成这一工作。

IEEE 浮点数介绍

IEEE 754 浮点单精度数字格式定义了一个用于存储浮点数的比特布局。在空比特布局中,一个比特留作符号位,八个比特留作指数,23个比特留作尾数。这些比特是按最重 要比特到最不重要比特进行排列的,如下例所示:



31                             0
|                              |                      
SEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMM

其中:

S = 符号位
E = 指数
M = 尾数

你可以从 IEEE 的站点购买一份 IEEE 浮点数的完整解释。(如果在线搜索 IEEE 754,你应该可以找到免费的版本。)

Float 对 Java 社区的贡献

下面的示例程序使用 Float 的两个方法将一个浮点数转成比特,然后又将这些比特转成一个浮点数。

使用Float.floatToIntBits(float f) 方法可以将一个浮点数转成一个比特序列。这个方法返回一个32位整数,表示你作为参数提供的浮点数的 IEEE 754 比特排列。

使用Float.intBitsToFloat(int bits) 方法可以进行反方向转换。这个方法接受传入的整数作为参数,将这些比特转成一个 IEEE 浮点数。

下面是示例程序:

public class BitsTip {
    public static void main(String args[]) {
        float f = Float.parseFloat(args[0]);
        int bits = Float.floatToIntBits(f);

        System.out.println("bits: " + bits);
        System.out.println("back to float: " + Float.intBitsToFloat(bits));
    }
}

如果你曾经必须要手工进行这种转换,那么你就会很欣赏这两个简单的方法为你节省的工作。如果你正在处理64位数,那么可以选择使用Double 包装器(wrapper)类。这个类提供同样的方法处理IEEE 754 双精度浮点数。

最好选择阅读一下javadoc,查阅里面有关浮点数与比特序列之间的转换的部分,以便完整地了解这些方法都能为你些做什么。

Java的数据类型有两种: 

(1)基本数据类型,这是达内IT培训老师为大家讲解的第一种Java数据类型。

1.Java的八大基本数据类型为: 

整型 

byte字节型1字节 8bit  最大存储数据量是255,存放的数据范围是-128~127之间 

short短整型2字节 16bit最大数据存储量是65536,数据范围是-32768~32767之间 

int整型4字节 32bit最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1 

long长整型8字节 64bit最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1 

浮点型

float单精度4字节 32bit数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F 

double双精度8字节 64bit数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加 

字符类型

char字符型用单引号 

布尔类型

boolean布尔型true/false(只有真假两种结果)

数据值域的知识说明: 

1.一个bit是计算机考研存储的最小的数据单位。即1位,只可能是0或1. 

2.一个byte由八个bit组成,即八位,可以表示256个整数值,又由于byte在Java中有符号之分(即正负数),所以范围位-128~127. 

3.一个char在Java中由两个byte组成,用来表示一个字符,即unicode编码,是无符号类型。 

4.int和float在Java中由4个byte组成。 

5.每个long或double型变量占用八个byte的存储空间。 

6.1T=1024G,1G=1024M,1M=1024K,1K=1024B 

小心得:

1.程序中的整数默认都是int型,即在方法调用直接传入的一个具体的整数值,默认情况下是int型。

2.值域小的的类型可以自动转化为值域大的。值域大的不能直接转化为值域小的,但是可以通过强制转化实现。 

eg: 
   byte a=10; 

int 
i=a;

(程序正常运行,输出的i为10) 

eg:int a=10; 

byte 
i=(byte)a; 

(程序正常运行,输出的i为10) 

若a的值超出了byte类型的上限或下限,可以输出值,但该值的数据会改变,改变规律如下: 

假设a为int型,b为byte型(其他情况可以类比!~) 

若a大于byte的上限值,则应减去其值域n次,直到最终的值落在-128~127之间,举个例子:int a=1000; 

byte 
b=(byte)a;//1000-256-256-256-256=-24

(输出的b为-24) 

3.浮点型转化为整型是不是四舍五入,而是直接截去小数部分。如: 

double 
b=12.5; 

int 
i=(int)12.5; 

(输出值为12而不是13!) 

4.浮点型数字的科学表示方法: 

比如:1.2e+12f(表示1.2乘以10的12次幂) 

1e-21f(表示1乘以10的-21次幂) 

(2)对象数据类型(应用数据类型,类类型)

所有用class,interface,abstract 
class定义的类; 

String是Java定义的一个类。 

String的数据存储方式和Java的基本数据类型是一致的。 

String的定义方式 

String 
str="abc"; 

String 
str-new String(); 


欢迎扫描二维码,关注公众号


Java数据类型总结_第1张图片

你可能感兴趣的:(java)