数据类型

简单带大家了解一下数据类型吧!!!!

数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。

 数据类型可分为基本数据类型和引用数据类型。下面就带大家具体阐述一个基本数据类型和引用数据类型。

基本数据类型

基本数据类型包括整数、浮点数、字符和布尔。

  • 整数又可以分为四类,主要依据的是数的取值范围,可分为byte(字节)、short、int、long

说明:一个字节(byte)等于8位,总共有2^8个状态。为什么是2^8个状态,而不是8个状态?因为一个位拥有两个状态,而且一个字节等于8位,因此总共有2^8个状态。

1、byte:在内存中占据一个字节,拥有2^8个状态,则存储的范围是-2^7~2^7-1;如果定义了一个变量a为byte类型,并且给变量赋值a赋值一个在它存储范围的一个具体的数值,再给它赋值一个大于2^7-1的一个具体的数值,会出现什么样的结果呢?举例说明吧: 

class Test{
    public static void main(String[] args){


        //错误1
        /*
        输入在该范围内的一个具体数值
        运行结果如下:
        PS F:\JavaSE\Day02> javac Test.java
        PS F:\JavaSE\Day02> java Test
        a的值为:100
         */
        byte a=100;
        System.out.println("a的值为:" + a);//a的值为:100
        /*
        在定义一个变量数据类型为byte,赋值为200
        运行结果如下:
        Test.java:16: 错误: 不兼容的类型: 从int转换到byte可能会有损失
         byte b=200;
                ^
        1 个错误
         */
         byte b=200;
         System.out.println("b的值为:" + b);


        //错误2
         /*
         同理在定义两个变量c、d、e
         运行结果:
         错误: 不兼容的类型: 从int转换到byte可能会有损失
        */
        byte c=10;//该整数再存储范围内
        byte d=30;//该整数再存储范围内
        byte e=c+d;
        System.out.println("e的值为:" + e);
    }
}

分析:为什么会出现上述原因?第一:由于对于任意的一个整数来说,它只要赋值给一个变量,不管这个变量是什么基本数据类型,这个整数都会被默认为int;第二:当这个数值要复赋值给一个变量是,先看这个变量是属于什么数据类型,内存给它分配了多少存储空间,我是否能将该数值存下,会出现种种问题。

例如:参考上述代码——当定义了一个基本数据类型为byte的变量a时,内存就知道给它分配多大的空间,因为在计算机中都是以二进制存储;

//错误1的原因:
byte a=100;
/*
就相当于给改数据类型分配了存储空间,可存储的范围为-2^7~2^7-1,即0 0 0 0  0 0 0 0
又因为在计算机中数据都是以二进制所存储的,则再将给变量a赋值为100时——即0 1 1 0  0 1 0 0
对于一个整数来说则被默认为int:
00000000  00000000  00000000  0 1 1 0  0 1 0 0
                              0 1 1 0  0 1 0 0
因此改编译正确
*/
byte b=200;
/*
同理,可存储的范围为-2^7~2^7-1,当给变量b赋值为200时——即1 1 0 0  1 0 0 0‬
int——00000000  00000000  0000000  0  1 1 0 0  1 0 0 0‬   因为有效位数是后面的八位,但是还有一位是符号位0表示正,1表示负
                                  |  1 1 0 0  1 0 0 0‬
                                  |
                            上面的0表示符号位
因此就会出现int转byte可能会有损失
*/

//错误2的原因
byte c=10;//该整数再存储范围内
byte d=30;//该整数再存储范围内
byte e=c+d;
/*
虽然变量c、d在该范围内,但是e实际并不知道c、d的值具体为多大,因此就会出现
错误: 不兼容的类型: 从int转换到byte可能会有损失
*/

2、short:占二个字节,与byte同理,范围为-2^15~2^15-1;

3、int:占四个字节,范围为-2^31~2^31-1,因为任意一个整数被默认为int,因此不会出现上述现象;

4、long:占八个字节,范围为-2^63~2^63-1,与int同理。

  • 浮点数:包括float(占四个字节)、double(占八个字节)。字符常量通常为double

注:整数 + 浮点数(double) = 浮点数(double)

  • 字符:占两个字节,范围为0~65535,指的是字符编码。

  • 布尔:并没有具体给出占多少字节,true/false。

注:在Java当中并没有给boolean一个明确的大小,主要和底层虚拟机相关

引用数据类型

引用数据类型主要包括字符串、数组、对象、null。

未完待续·················

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值