Java基本数据类型、变量及引用

目录

1、Java数据8个基本数据类型

2、变量

3、引用数据类型(以字符串/数组为例)


1、Java数据8个基本数据类型

Java中有8个基本数据类型,它们是最底层的数据类型,具体地说,有:

        1.整数型:包含四种,分别是:

                (1)byte,占用8bit

                (2)short,占用16bit

                (3)int,占用32bit

                (4)long,占用64bit

        我们知道,计算机是用二进制来存储数据的。而上述四种整数型数据都有一个符号位,四种整数型数据所能表示的数据范围为:

byteshortintlong
-2^{7}\Leftrightarrow 2^{7}-1-2^{15}\Leftrightarrow 2^{15}-1-2^{31}\Leftrightarrow 2^{31}-1-2^{63}\Leftrightarrow 2^{63}-1

        2.浮点型:包含两种,分别是:

                (1)float(单精度浮点数),占用32bit

                (2)double(双精度浮点数),占用64bit

        与整数型数据相同,浮点型数据也有一个符号位,上述两种浮点型数所能表示的数据范围为:

floatdouble
-2^{31}\Leftrightarrow 2^{31}-1-2^{63}\Leftrightarrow 2^{63}-1

        3.字符型:char,占用16bit

        字符型数据不带有符号,每一个字符都由一个默认的底层数字编码标识。

        4.布尔型:boolean

        布尔型数据较为特殊,它只有两个取值,true/false,一般用于标志位。

        这8种数据拥有一些共同点:

        ①它们都是以位(bit)为单位,bit是一个二进制位。

        ②它们的取值范围是固定的。

        ③当定义一个上述数据的变量且不为其规定值时,它的值是固定的(下面会讲)。

2、变量

        在计算机中有一块内存空间,内存空间中有一块用来存储数据。我们定义一个变量时,就可以把变量当作数据的代词,如下:

int b = 1;

        当我们使用变量名"b"时,计算机便会解析这个变量名所指的内存空间,并把它的值“1”取出来进行操作。

        回到上面的问题,当我们定义了一个变量,且不规定它的值时,系统会默认为它分配一个固定值,其中,byte、short、int、long、float、double、char的默认值为0,而boolean的默认值为false。

        对上述的8中基本类型的数据变量赋值示例:

byte b = 0;
short s = 0;
int i=0;
long l =0l;

float f1 = 1.123456789f;
double d1 = 1.123456789012346679;

char c='A';

boolean flag = true;

        注意,在给long类型变量赋值的时候,需要在后加一个l或L,而在给一个float类型的变量赋值的时候,需要在后面加一个f或F。

3、引用数据类型(以字符串/数组为例)

        除了上述的8种基本的数据类型之外,我们再介绍一下引用数据类型,我们用字符串(string)和数组作为例子说明:

String str;
str="ABCDEFG";

        字符串可以存储的字符数量可变,其空间是不固定的。

        当我们定义8种基本的数据类型的变量时,通过变量名的指引,可以直接查找数据的;但对于引用数据类型则不然,引用数据类型的变量名指向的是数据在内存中的存储地址

        这就导致当我们在把一个变量的赋值给另一个变量时,对于基本类型的数据和引用数据类型的数据,会出现一种不同的结果:

int i=0;
int j=i;

        对于基本类型的数据赋值,计算机将会在内存中另外分配一个空间存储j所对应的值,虽然和i的值一样,但是计算机还是再次为这个j的值分配了内存空间。

string str="ABCDEFGH";
string str1 = str;

        而对于引用数据类型,计算机只会再添加一个指向内存中存储地址的变量。

        如下图所示:

 

        这样具体有什么区别呢?我们再来用一个数组来演示一下:

int[] arr1 = {1, 2, 3};
int[] arr2 = arr1;
System.out.println(arr1[0]);

arr2[0] = 100;
System.out.println(arr1[0]);
输出的结果对比

        可以看出,数组arr2和数组1“共享”了一个数组,当我们修改数组arr2中的值时,数组arr1的值也随之改变。

        欢迎批评指正!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值