Java数据类型:基本数据类型和引用数据类型

为了方便存储物品,我们可以规定每个盒子存放的物品种类。同理,Java中变量的存储也讲究“分门别类”

变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来存储该类型数据 

因此,通过定义不同类型的变量,可以在内存中储存不同类型的数据。如:整数、小数、字符...

变量在声明时被指定为一个特定的类型,声明后类型就不能被改变了

 

 

Java的两大数据类型:

  • 基本数据类型(Primitive Type)
  • 引用数据类型(Reference Type)

基本数据类型的变量存储的是数据本身,而引用数据类型的变量存储的是保存数据的空间地址

—— 即基本数据类型变量里存储的是直接放在抽屉里的东西,而引用数据类型变量里存储的是这个抽屉的钥匙,钥匙和抽屉一一对应

 

 基本数据类型

  • byte(字节型)
  • short(短整型)
  • int(整型)
  • long(长整型)
  • float(单精度浮点型)
  • double(双精度浮点型)
  • char(字符型)
  • boolean(布尔型)

 共8种基本数据类型,可分为4类:

        4种整数类型 - byte、short、int、long

        2种浮点类型 - float、double

        1种字符类型 - char

        1种布尔类型 - boolean 

基本数据类型 关键字 占用内存 取值范围 默认值
字节型 byte 1字节,8位 -128 ~ 127 0
短整型 short 2字节,16位 -32768 ~ 32767 0
整型 int 4字节,32位 -2147483648 ~ 2147483647 0
长整型 long 8字节,64位 -9223372036854775808L ~ 9223372036854775807L 0L
单精度浮点数 float 4字节,32位 -3.4E-38 ~ 3.4E+38(6-7个有效位) 0.0f
双精度浮点型 double 8字节,64位 -1.8E+308 ~ 1.8E+308(15个有效位) 0.0d
字符型 char 2字节,16位

单一的16位Unicode字符
最小值是 \u000(十进制等效值为0)

最大值是 \ufff(即65535)

'u0000'
布尔型 boolean 1字节,8位 true / false false

1个字节有8位

 

整数类型(均有符号) 

  • byte 类型

byte类型是最小的整数类型

用在大型数组中会节省内存空间,可代替int整型,因为byte类型变量占用的空间为int类型变量的1/4

当用户从网络/文件中处理数据流时,或者处理可能与Java其它内置类型不直接兼容的未加工的二进制数据时,该类型非常有用

byte a = 100;
byte b = -50;
  • short 类型

short数据类型也较为节省内存空间。因为short类型变量占用的空间为int类型变量的1/2

但short类型限制数据的存储为先高字节,后低字节。这样在某些机器中会出错,因此该类型很少被使用

short s = 1000;
short r = -20000;
  • int 类型 

int类型是最常使用的一种整数类型。整数类型的变量默认为int类型

int age = 18;
int b = -200000;
  • long 类型

long类型主要使用在需要较大整数的系统上(当超出int类型的取值范围就需要使用long类型)

// "L"理论上不分大小写,但是小写"l"容易与数字"1"混淆,不容易分辩。所以建议大写
long a = 100000L;
long b = -200000L; 
public class Learn {
    public static void main(String[] args) {

        byte a = 10;
        short b = 20;
        int c = 30;
        long d = 40;
        long sum = a + b + c + d;
        System.out.println("10+20+30+40=" + sum);
    }
}

 

浮点类型

包括单精度浮点型(float)和双精度浮点型(double),代表有小数精度要求的数字

float类型和double类型之间的区别:

  主要是所占用的内存大小不同(float类型占用4字节的内存空间,double类型占用8字节的内存空间)

  双精度类型double比单精度类型float具有更高的精度和更大的表示范围

注意:float类型 - 必须以 f/F 结束。否则会被当作double类型

  • float 类型

float类型在存储大型浮点数组时可节省内存空间(仅能存储小数)

float height = 172.5f;
float price = 12.2f;
  • double 类型

浮点数类型的变量默认为double类型

double price = 15.8;
double score = 95.0d; 
public class Learn {
    // 从A地到B地路程为2348.4米,那么往返两地路程共多少米
    public static void main(String[] args) {
        // 定义double类型的变量,用于存储单程距离
        double distance = 2348.4;
        // 定义int类型的变量,用于存储次数
        int num = 2;
        // 定义float类型的变量,用于存储往返两地的总路程。并将其转为float类型
        float total = (float)(distance * num);
        System.out.println("往返AB两地的路程共:" + total + "米");
    }
}

double类型的数据与int类型的数据相乘后得到的结果类型为double

但由于单程距离乘以次数为一个单精度浮点型(float类型)的数,因此可以将总距离转换为float类型的数据

 

boolean 类型

boolean类型用于通过逻辑运算对两个数值进行判断,判断其结果是“真”还是“假”

boolean类型的值不能转换成任何数据类型。true常量不等于1,且false常量也不等于0。这两个值只能赋给声明为boolean类型的变量,或者用于布尔运算表达式中

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

        // 先声明boolean类型的变量isAbled
        boolean isAbled;
        // 再对变量isAbled进行赋值
        isAbled = true;

        // 声明boolean类型的变量b,并赋值
        boolean b = false;

        System.out.println(isAbled);
        System.out.println(b);
    }
}

 

char 类型

char类型用来表示单个的字符

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

        char letter = 'A';
        char numChar = '5';
        System.out.println("A的ASCII值与B的ASCII值相加结果为" + (letter+numChar));
    }
}

  

引用数据类型

  • 引用数据类型就是对一个对象的引用,对象包括实例和数组两种
  • 一个引用变量可以引用任何与之兼容的类型
  • 所有引用数据类型的默认值都是null
  • 空类型(null type)就是null值的类型,这种类型没有名称。因为null类型没有名称,所以不可能声明一个null类型的变量或者转换到null类型
  • 空引用(null)是null类型变量唯一的值。空引用(null)可以转换为任何引用类型

注意:null 只能被转换成引用类型,不能转换成基本类型,因此不能把null值赋给基本数据类型的变量

WebKeyword web = new WebKeyword();

 

posted @ 2020-03-10 18:17  梦清欢  阅读(1485)  评论(0编辑  收藏  举报