龙空技术网

Java基本数据类型

会稽奇怪的银鱼 27

前言:

今天看官们对“java基本数据类型各占多少字节”大致比较重视,咱们都想要剖析一些“java基本数据类型各占多少字节”的相关文章。那么小编在网上网罗了一些有关“java基本数据类型各占多少字节””的相关内容,希望小伙伴们能喜欢,同学们快快来学习一下吧!

变量概述

前面我们已经学习了常量,接下来我们要学习变量。在Java中变量的应用比常量的应用要多很多。所以变量也是尤为重要的知识点!

什么是变量?变量是一个内存中的小盒子(小容器),容器是什么?生活中也有很多容器,例如水杯是容器,用来装载水;你家里的大衣柜是容器,用来装载衣裤;饭盒是容器,用来装载饭菜。那么变量是装载什么的呢?答案是数据!结论:变量是内存中装载数据的小盒子,你只能用它来存数据和取数据。

计算机存储单元

变量是内存中的小容器,用来存储数据。那么计算机内存是怎么存储数据的呢?无论是内存还是硬盘,计算机存储设备的最小信息单元叫”位(bit)”,我们又称之为“比特位”,通常用小写的字母 "b" 表示。而计算机最小的存储单元叫“字节(byte)”,通常用大写字母B表示,字节是由连续的8个位组成。

你可能会想,1个字节(8位)可以存储很大的数值了,1位最大是9那么8位最大值为99999999。你错了,因为计算机是采用二进行存储的,而不是我们生活中常用的十进制。所以1个字节存储的最大数据是11111111的二进制数。

除了字节外还有一些常用的存储单位,大家可能比较熟悉,我们一起来看看:

1B(字节) = 8bit1KB = 1024B1MB = 1024KB1GB = 1024MB1TB = 1024GB1PB = 1024TB
基本类型之4类8种

大衣柜不能用来装载水,水杯也不能用来装载衣裤。这说明不同的容器装载不同的物品。变量也是如此,在创建变量时需要指定变量的数据类型,例如整型变量、浮点型变量等等。结论:变量必须要有明确的类型,什么类型的变量装载什么类型的数据。

水杯是用来装水的,那么水杯能装多少水呢?一吨?我们知道水杯在创建时不只确定了要装载的是水(数据类型),而且还确定了能装多少水(数据类型的具体种类)变量也是如此,需要指定变量能装载什么类型的数据,同时也要指定变量能装载多大的数据。

Java中基本类型一共4类,把这4类展开后共8种基本类型。这8种基本类型如下图所示:

Java八大基本类型

从表格可以看出,整形中的四种类型和浮点型中的两种类型存在所占内存的差异,同时也存在数据表示范围的差异。这是因为计算机存储的数据都以二进制的形式储存,更大的存储空间,必定意味着能够表示数值的二进制位越多,故能够存储的数据范围更大。

常量与类型

具体的一个数字,例如100是整数常量,但它是byte、short、int、long中的哪一种呢?下面我们来聊聊这一常量类型的问题。

Java中默认的整数类型是int类型,若需要将整数声明为其它类型,需要在声明变量时指定类型:

byte a = 10;short b = 20;int c = 30;long d = 40L;

需要特别注意的是,(1)声明long类型的整数,建议在数字后加上"L"进行标识;(2)存储的数据需要在声明变量类型的存储范围内

存储数值超过数据类型范围导致的报错

Java中默认的浮点数类型是double类型,若需要将浮点数声明为其它类型,需要在声明变量时指定类型:

float a = 1.5F;double b = 2.5;

需要特别注意的是,(1)声明float类型的浮点数,需要在数字后加上"F"进行标识,否则会被默认识别为double类型产生编译异常;(2)存储的数据需要在声明变量类型的存储范围内

声明float变量初始化时数字后未加F导致的报错

定义变量(创建变量)

定义变量的语法格式:数据类型 变量名 = 数据值;

int a = 100;

其中int是数据类型,指定了变量只能存储整数,而且指定了存储范围为-2147483648~2147483648。

其中a表示变量名,变量名是标识符,这说明只要是合法的标识符都可以用来做变量名。在程序中可以通过变量名来操作变量(内存中的小盒子)。

其中“=100”是给变量赋值,即向a变量中写入100(变量是个小盒子,现在小盒子中保存的是100)。注意,给变量赋的值一定要与类型符合,也就是说int类型只能存储整数,而且必须是在-2147483648~2147483648范围内的整数。100满足了这两个条件,所以是正确的。

案例

public class Main {    public static void main(String[] args) {        byte a = 10;        short b = 20;        int c = 30;        long d = 40L;        double e = 3.14;        float f = 2.56F;        char g = 'A';        boolean h = false;        System.out.println("a: " + a);        System.out.println("b: " + b);        System.out.println("c: " + c);        System.out.println("d: " + d);        System.out.println("e: " + e);        System.out.println("f: " + f);        System.out.println("g: " + g);        System.out.println("h: " + h);    }}

执行结果

变量使用的注意事项

我们使用变量的时候需要注意,要满足变量的使用规则才可以使用的,我们来看看都有哪些注意事项。

变量定义后可以不赋值,使用时再赋值。不赋值不能使用。

public static void main(String[] args) {    int x;    x = 20; //为x赋值20    System.out.println(x);//读取x变量中的值,再打印}

2. 变量使用时有作用域的限制。

public static void main(String[] args) {    int x = 20;    {        int y = 20;    }    System.out.println(x);//读取x变量中的值,再打印    System.out.println(y);//读取y变量中的值失败,失败原因,找不到y变量,因为超出了y变量作用范围,所以不能使用y变量}

3. 变量不可以重复定义。

public static void main(String[] args){     int x = 10;     double x = 5.5;//编译失败,变量重复定义}
数据类型转换

不同类型的变量是否可以在一起运算呢?答案是可以的,但要先进行类型转换再运算。下面我们来学习一下类型转换。

转换的过程中,数据遵循一个原则:

范围小的数据类型值(如byte),可以直接转换为范围大的数据类型值(如int);

范围大的数据类型值(如int),不可以直接转换为范围小的数据类型值(如byte)。

这是因为范围较小的数据类型存储空间较小,而范围较大的数据类型存储空间较大。把一个能在小空间放下的数据放到大空间里面,肯定是可以的,而反过来就不一定了,所以Java范围较大的数据类型转较小的数据类型,必须强转,且可能损失精度。

各种数据类型按照数据范围从小到大依次列出:

byte -> short -> int -> long -> float -> double

关于数据类型转换有两种方式:

自动类型转换

表示范围小的数据类型转换成范围大的数据类型,这种方式称为自动类型转换

2. 自动类型转换格式:

范围大的数据类型 变量 = 范围小的数据类型值;如:

int i = 100;double d2 = i;

2. 强制类型转换

表示范围大的数据类型转换成范围小的数据类型,这种方式称为强制类型转换

强制类型转换格式:

范围小的数据类型 变量 = (范围小的数据类型) 范围大的数据类型值; 如:

int i = (int) 6.718;   //i的值为6

double d = 3.14;int i2 = (int) d; //i2的值为3

标签: #java基本数据类型各占多少字节