在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码输入即可输出对于的字母。