总结一下Java的数据类型体系

来源:互联网 发布:辽宁11选5遗漏数据 编辑:程序博客网 时间:2024/05/17 23:35

总结一下Java的数据类型体系

ps(应老师要求,总结一下Java的数据类型体系,请各位大大们不喜勿喷!)

在java的世界中存在着多种的数据,为了便于人的理解和管理,我们需要对这些数据进行分类,按照国际上的规则,将java分为2种数据类型:

- 基本数据类型
- 引用数据类型
下面将对这2种数据类型进行详细的介绍:

基本数据类型:

基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型。它们是我们编程中使用最频繁的类型。java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化。

基本类型一共有8种,可以分成3类:
数值型 : byte short int long float double
数值型又可以分为2种即整数类型 byte short int long 和浮点数类型float double
字符型: char
布尔型:boolean
JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。

8 中类型表示范围如下:

byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。默认值是 0;
例子:byte a = 100,byte b = -50。

short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。默认值是 0;
例子:short s = 1000,short r = -20000。

int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。默认值是 0 ;
例子:int a = 100000, int b = -200000。

long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。默认值是 0L;
例子: long a = 100000L,Long b = -200000L。
“L”理论上不分大小写,但是若写成”l”容易与数字”1”混淆,不容易分辩。所以最好大写。

float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。默认值是 0.0f;
例子:float f1 = 234.5f。

double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。默认值是 0.0d;
例子:double d1 = 123.4。

boolean:1位 只有true和false两个取值。默认值是 false;
例子:boolean one = true。

char:16位,存储Unicode码,用单引号赋值。char 数据类型可以储存任何字符;
例子:char letter = ‘A’;。

下面介绍下数据的转换:
程序中经常会遇到要将数据类型进行转换的情况(如:在一个表达式中存在不同类型的操作数时),Java的数据类型转换比C控制得更为严格;

数据类型转换有两种情况:

  1. 自动类型转换
  2. 强制类型转换

自动转换(隐式转换):

具体地讲,当一个较”小”数据与一个较”大”的数据一起运算时,系统将自动将”小”数据转换成”大”数据,再进行运算。而在方法调用时,实际参数较”小”,而被调用的方法的形式参数数据又较”大”时(若有匹配的,当然会直接调用匹配的方法),系统也将自动将”小”数据转换成”大”数据,再进行方法的调用,自然,对于多个同名的重载方法,会转换成最”接近”的”大”数据并进行调用。这些类型由”小”到”大”分别为 (byte,short,char)–int–long–float—double。这里我们所说的”大”与”小”,并不是指占用字节的多少,而是指表示值的范围的大小。
规则如下:
两种类型必须兼容,且目标类型大于源类型,例如:
byte、char和short类型都可以提升为int型。
数值型表达式的转换
有double 则结果为duoble
有float 结果为float
有 long 结果为long
其他结果为int
举例如下:
1. 下面的语句可以在Java中直接通过:
byte b;int i=b; long l=b; float f=b; double d=b;
2. 如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如
char c=’c’; int i=c;
System.out.println(“output:”+i);输出:output:99;
3. 对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。
short i=99 ; char c=(char)i; System.out.println(c);输出:c;
ps:对于boolean类型的数据是不能进行数据转换的.

强制转换(显示转换):

将”大”数据转换为”小”数据时,你可以使用强制类型转换。即你必须采用下面这种语句格式: int n=(int)3.1415;可以想象,这种转换肯定可能会导致溢出或精度的下降.

强制转换所遵循的规则:
-大的类型转换成小的类型,需要使用(类型名)进行强制转换
- 强制转换可能会精度丢失
- char可以与整数型进行互转

引用类型:

简单来说,除了基本数据类型,剩下的都是引用类型.
主要有:
API中的类,如String、File等
数组(后续学习)
自定义的类,如Cars、Student
对象全部是引用数据类型。
PS:String是引用类型,不是基本数据类型。

引用类型使用的场景与基本数据类型完全一样
- 作为属性的类型使用
- 作为方法的返回值类型使用
- 作为方法的形式参数类型使用

赋值方法:
- 引用类型都是对象,所以赋值都使用new调用构造方法进行赋值
- 例外:String类可以直接使用=赋值,不使用new,后续详细学习

基本数据类型和引用类型的区别

这里写图片描述