计算机,顾名思义就是用于计算的,而编程就是计算的思路表达,所以编程的本质是数学;
编程解决的是现实世界中巨量的计算和存储问题,计算和存储的是数据,所以数据必须有数据类型,才能准确的抽象和表达现实世界的各种数据形势;
每一门编程语言中都有数据类型的概念,而且都是相似的,掌握了Java编程的数据类型,其他编程语言分分钟掌握;
一、关于变量
变量,顾名思义,就是变化的量;
量在中国古代有器物的意思,也就是盛放东西的容器,在Java中,变量就是盛放数据的“容器”,也可以比作“盒子”,而且容器内的数据是可以变化的,所以就叫变量;
Java中变量必须指定数据类型,然后再存放数据,比如
int a = 100;
就是变量(盒子)a 中存放了 100 这个数字;a 就是变量(盒子)的名字,int 就是变量(盒子)内存储的数据类型,100 就是数据;
一句话解释就是:变量 a 中只能放 int(整数)类型,然后将100这个整数放进去,那么 a 的代表的数据值就是100了;
二、数据类型
1、Java是一门强类型语言;
也就是说,所有的变量都必须显式声明类型;比如:int a = 100;
就是说必须在这个变量 a 前面加上 int 这个数据类型;
2、Java的数据类型分为两大类:基础类型和包装类型(也叫引用类型);
比如:int
和 Integer
,int
就是基本类型,Integer
就是包装类型,这些后面会讲到,先了解;
3、Java的8种基本类型(不包括void),是必须要记住的:
基本类型 | 大小 | 最小值 | 最大值 | 包装类型 | 说明 |
boolean | — | — | — | Boolean | 布尔类型 |
char | 16-bit | Unicode 0 | Unicode2^16 - 1 | Character | 字符类型 |
byte | 8bits | -128 | 127 | Byte | 字节类型 |
short | 16bits | -2^15 | 2^15 - 1 | Short | 短整数类型 |
int | 32bits | -2^31 | 2^31 - 1 | Integer | 整数类型 |
long | 64bits | -2^63 | 2^63 - 1 | Long | 长整数类型 |
float | 32bits | IEEE754 | IEEE754 | Float | 浮点数类型 |
double | 64bits | IEEE754 | IEEE754 | Double | 双精度类型 |
void | — | — | — | Void | 空类型 |
不同的数据类型,能够表示的数据是有大小范围的,用 bit(位)表示;
因为计算机的最底层就是 0 和 1
两个数字,也就是说所有的程序都是用 bit 来解释和存储;所以数据类型的大小用 0 和 1
这两个数字来表示,那么长度就是 2 的 n 次方了,表示为 2^n 。
三、数据类型之间的转换
简单类型除了boolean类型以外,某个数据类型可以自动转换成其他的数据类型,必须遵循如下图所示的原则:

我们只能从位数较小的向位数较大的转化,不可以反过来,否则会丢失位数,导致数据不准确;实线表示类型转换不会丢失数据,虚线表示类型转换可能会丢失数据;
比如电商网站中商品的价格如果是 double 类型的,如果向 int 类型转化,就会丢失超过int范围的数据,那么购买物品时导致金额变小,所以Java禁止转换,会编译报错;
四、编程实战
代码的详细解读,可以参考视频教程;
public class C11 {
public static void main(String[] args) {
boolean b = true; //只有两个值 true 和 false
Boolean bb = false;
char c = 'c'; //字符类型,用单引号
Character cc ='c';
short d = 1; //短整数,就是表达的范围比整数小
Short dd = 1;
int e = 100; //整数
Integer ee = 100;
long g = 10000; //长整数
Long gg = 10000L; //长整数,表示范围比整数大,结尾用小l也可以
float f = 9.9f; //如果小数表示浮点数,那么必须后面加f或F
Float ff = 9.9f;
double h0 = 199.99; //小数默认是double类型
Double h1 = 199.99;
Double h2 = 199d;
Double h3 = new Double(199);
Double h4 = Double.parseDouble("199");
// void; //是一种特别的"空"类型,不做任何表示,一般用于函数返回值,表示没有任何内容返回
String s = "hello world"; //字符串类型
}
}
类型转换和说明
public static void main(String[] args) {
//int类型转化
float f = 3; //3.0
double d = 3; //3.0
//long类型转化
double d1 = 1000L;//1000.0
float f1 = 1000L; //1000.0
//float转化
double d2 = 3.14f;//3.140000104904175
//包装类型的 Long、Float、Double,如果用int类型赋值,必须用类型字母L、F、D结尾
Long lg = 3L;
Float ft = 3F;
Double de = 3D;
Float ft2 = 3.14F;
//不可以转换(笔试常考题)
short s1 = 100000;//编译错误,int长度超过short类型范围
short s2 = Integer.parseInt("100");//编译错误,不能向短类型转化
short s3 = 10;//short类型
s3 = s3 + 100;//编译错误,100是整数,相加只能往整数转化,不能向短类型转化
s3 += 100; //编译正确,相当于 (short) (s3 + 100)
//其他类型转换
float pi = 3.14;//编译错误,3.14是double类型
int i = 1000L; //编译错误,不能将long类型转化为int
}
五、作业练习
1、将类型转化图自己画一遍
2、float f = 5.2; 对吗?
3、Double d = 1000; 对吗?
4、Java有几种基本类型,分别是什么?