数据类型的分类

在Java语言中数据类型主要分为两大类:

  (1)基本数据类型(记住)

    byte、short、int、long、float、double、boolean、char

  (2)引用数据类型(了解)

    数组、类、接口、枚举、标注

 

一、Java语言中描述整数数据的类型有:byte、short、int、long,推荐int类型

  其中byte类型在内存空间中占用1个字节,表示范围是:-2^7 ~2^7-1;

  其中short类型在内存空间中占2个字节,表示范围是:-2^15 ~2^15-1;

  其中int类型在内存空间中占4个字节,表示范围是:-2^31 ~2^31-1;

  其中long类型在内存空间中占8个字节,表示范围是: -2^63 ~2^63-1;

 

默认为int类型,所以超过数据类型自身就已经出错了; 

byte a = 127;

 

 short b = 250250;

 

 int c = 45432132123132131313;

 

 

在数据末尾加上L更改默认类型:在Java程序中直接写出的整数数据叫做直接量/字面量/常量,默认为int类型。若希望表达更大的直接量,则在直接量后面加上l或者L,推荐L.

int d = 250250250250L;

 

 若描述比long类型还大的数据则使用java.math.BigInteger类型

 

问题1:为什么变量赋值会报错?

  int a = 25;
  byte d = a;

 

二、Java描述浮点的数据类型有:float和double,推荐double类型

  其中float类型在内存空间占4个字节,叫做单精度浮点数,可以表示7位有效数字,范围:-3.403E38~3.403E38(E38表示10^38)。

  其中double类型在内存空间占8个字节,叫做双精度浮点数,可以表示15位有效数字,范围:-1.798E308~1.798E308。

  Java程序中直接写出的小数数据叫做直接量,默认为double类型,若希望表达float类型的直接量,则需要在直接量的后面加上f或者F。

 

  float类型可以表示7位有效数据,这些小数数据叫做浮点直接量

  float如果超过7位有效数据,也会返回整数类型类似的错误

float f1 = 3.1415926;

 

   避免这类错误的方法就是在数据末尾标注该数据是什么类型?比如:

float f1 = 3.1415926f;

 

   因为float最多可以表示7位浮点数,所以第8位浮点数不准确,这时候就应该使用更大的双精度浮点数double类型

double f1 = 3.1415926;

 

   因为float类型和double类型存在误差,所以商业开发(涉及金钱的时候)的时候不使用float类型和double类型,若希望实现精确运算则借助java.math.BigDecimal类型

  以下例子可以看出float、double存在误差:

float f1 = 3.1415926f;
double f2 = 3.1415926;
System.out.println(f1+f2);

 

三、Java描述布尔的数据类型有:boolean

  Java语言中用于描述真假信息类型有:boolean,数值只有:true 和 false。

  布尔类型在内存空间中所占大小没有明确的规定,可以认为是1个字节。

  声明布尔类型:

boolean b1 = true;
boolean b2 = false;

  整数直接量不能转换成boolean类型:

boolean b2 = false;
b2 = 2;

 

四、Java描述字符的数据类型有:char

  Java语言中用于描述单个字符的数据类型:char类型。如:‘a’、‘中’等。

  其中char类型在内存空间中占2个字节并且没有符号位,可以表示的范围是:0~65535,由于现实生活中很少有数据能够被单个字符描述,因此此后的开发中更多的使用由多个字符串起来组成的字符串,使用String类型加以描述,如“hello”,“奇点”等。

  计算机的底层只识别0和1组成的二进制序列,对于字符‘a’这样的图案来说不满足该规则,因此该数据无法直接在计算机中存储,但现实生活中存在这样的图案数据需要计算机存储,为了使得该数据可以存储起来就可以给该数据指定一个编号,然后将编号存储起来即可,该编号就叫做ASCII。

char类型定义:

char ar = 'a';

char类型演示ASCII码的强制转换:

char ab = '石';
char ar = 30707;

强制转换ASCII码的时候,需要char类型强制转换为int类型并打印,输出后的结果为对应的ASCII码

System.out.print((int)ab);

总结:

  1、char类型只能存储 单引号中存放的单个数据

  2、存储多个数据需要使用系统定义以外的String类型

  3、字母有对应的ASCII码,对于的ASCII码输入即可输出对于的字母。

 

posted @ 2020-08-18 20:20  IJLog  阅读(1321)  评论(0编辑  收藏  举报