Java基础-数据类型

1.数据类型概述

Java语言中的数据类型分为两大类,分别是基本数据类型和引用数据类型.程序中需要处理许多数据,对于不同数据都有其对应的数据类型,其实就是在内存中开辟一个存储空间来存放数据,不同数据所开辟的内存大小也会不一样.

2.数据存储的单位

位,字节,字是计算机数据存储的单位,位是最小的存储单位,每一个位存储一个1位的二进制码,一个字节由8位组成,而字通常为16,32或64个位组成.

​ 位(bit):是计算机中最基本的单位,位是最基本的概念,在计算机中,由于只有逻辑0和逻辑1的存在,即每一个逻辑0或者1便是一个位;

​ 字节(byte):计算机中处理数据的基本单位,是由八个位组成的一个单元,8个bit组成1个byte;

​ 字(word):代表计算机处理指令或数据的二进制数位数,是计算机记性数据存储和数据处理的运算的单位,在常见的计算机编码格式下,一个字等于两个字节(十六位) (1word=2byte=16bit)

3.基本数据类型

Java基本数据类型共有八种,可分为三类

类型字节(byte)位数(bit)数值范围
int432-2147483648~2147483647
short216-32768~32767
long864-9223372036854774808~9223372036854774807
byte18-128~127
float432
double864
char216
boolean18
4.引用数据类型

引用数据类型传递时是以拷贝引用地址的方式传递给接受变量,而非复制整个"数据"本体.

除了基本数据类型外的,其他结构化的数据类型,如字符串类型String或自定义的类,本质上是对现实世界结构化,关系化数据的抽象,因为一个对象总是具备多个特征属性的,每个属性都是一个基本数据类型.

引用数据类型

为什么不是拷贝值?

​ 这类类型的变量本质上是一个段存储空间的起始地址,因为结构化数据的存储空间的大小是由所有属性叠加的,且是可变的,不能或很难实现原子性的拷贝,且空间代价很大,因此参数传递时并不是机械的拷贝所有属性,所有空间,而是仅复制拷贝起始地址就行了,其他字段可以据此基地址和字段顺序进行偏移计算所得.

5.值类型和引用类型的区别
  1. 概念方面:基本数据类型变量名指向具体的数值,参数传递会拷贝值的副本,原值不收影响;引用类型变量名指向存数据对象的内存地址,数据传递是复制内存段的起始地址,最终指向同一内存段.

  2. 相等语义:基本类型使用时需要赋具体值,使用==号判断值是否相等.引用类型==是判断引用地址是否相等;通常应重写equals方法实现自定义的逻辑,如同一学生会存在多个缓存中,重写equals,根据学号no是否相等判断是否是同一学生.

6.类型转换

不同类型的数据,开辟出的内存空间大小不同,所以每种类型的取值范围就不同.

Java要求=等号左边和=等号右边的类型要一致,如果不一致,就需要进行数据类型转换.Java中不同的类型之间,在满足数据兼容的条件下可以实现转换.Java中的数据类型转换可分为以下几种:

  • 自动类型转换:容量小的类型自动转换为容量大的数据类型;

    • 代码不需要经过任何处理,在代码编译时,编译器会自动进行处理.

    • 特点:数据范围小的转为数据范围大的时会自动进行.

  • 强制类型转换:容量大的数据类型转换为容量小的数据类型;

    • 当进行操作时,代码需要经过一定的格式处理,不能自动完成.

    • 特点:数据范围大的到哦数据范围小的.

  • 隐含强制类型转换:在变量初始化时,int类型会隐含强制转换成低级别的byte和short类型;

  • 其他类型转换:包装类,字符串,基本类型直接的转换.

    对基本类型来说,常见的数据转换方式包括自动类型和强制类型转换;

    对引用类型而言,只存在强制类型转换一种形式.

    注意:

    1. 如果需要把范围大的类型赋值给范围小的,需要强制类型转换,但是可能精度丢失.

    2. 两个数据类型有关系才能互相转换.

              //隐式转换
              int a=100;
              //小类型转换大类型可以直接进行转换
              long b=a;
              System.out.println("b:"+b);//100
      ​
              //强制转换
              double c=10.98;
              //大类型转换小类型可能会损失精度
              int d=(int)c;
              System.out.println("d:"+d);//10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值