开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情
为什么数据要分类型
程序在执行的过程中,需要对数据进行运算,也需要存储数据。数据存储在内存的一块空间中,为了取得数据,必须知道这块内存空间的位置,为了方便使用,程序设计语言用变量名来代表该数据存储空间的位置。
将数据指定给变量,就是将数据存储到对应的内存空间;调用变量,就是将对应的内存空间中的数据取出来使用。
不同的数据分到对应的数据类型,就会有不同的数据结构、不同的存储方式,其所能参与的运算也不相同,数据类型定义了数据的性质、取值范围、存储方式以及对数据所能进行的运算和操作,所以在Java语言中对不同的数据用不同的数据类型来区分。
Java中的数据类型
Java中的数据类型分哪几类
Java中的数据类型分为两大类:一类是基本数据类型(primitive types);另一类是引用数据类型(reference types),简称引用类型。
基本数据类型有整型、浮点型、逻辑型和字符型;引用数据类型包括类、数组和接口等。
本篇文章重点介绍基本数据类型,Java语言定义了4类共8种基本类型,其中有4种整型、2种浮点型、1种布尔型(逻辑型)和1种字符型,它们的分类及关键字如下。
| 类型 | 关键字 |
|---|---|
| 整型 | byte short int long |
| 浮点型 | float double |
| 布尔型 | boolean |
| 字符型 | char |
整型
整数有正整数、零、负整数,其含义与数学中的含义相同。
Java语言的整数有三种进制的表示形式。
- 十进制:用多个0-9的数字表示,如123和-100,其首位不能为0。
- 八进制:以0开头,后跟多个0-7的数字,如0123。
- 十六进制:以0x或0X开头,后跟多个0-9的数字或a-f的小写字母或A-F的大写字母,a-f或A-F均表示值10-15,如0X123E。
整型即整数的类型,Java中定义的4种整数的类型分别为:字节型(byte)、短整型(short)、整型(int)、长整型(long)。
Java中的每种整型的数据都是带符号位的。符号位通常是数据的最高位,如8位数据,左边第一位是符号位,后边七位用来表示数据大小。符号位都是用“0”表示“正”,用“1”表示“负”。
一个整数隐含为整型(int型)。这句话的意思是指"long number = 3;"中的number是长整型(long型),但是3是整型(int型)。当要将一个整数强制表示为长整数时,需在后面加字母l或L。即“long number = 3L;”。所以若声明long型变量的值超过int型的取值范围时,如果数的后面不加l或L,系统会认为是int型而出错。
浮点型
实数(浮点数)既有整数部分又有小数部分,Java语言中用浮点型表示。
浮点型有两种表示方式。
- 标准计数法:由整数部分、小数点和小数部分构成,如3.0,3.1414等。
- 科学计数法:由十进制整数、小数点、小数和指数部分构成,指数部分由字母E或e跟上带正负号的整数表示,如123.45可表示为1.2345E+2。
Java中定义的2种浮点型的类型分别为:单精度浮点(float)和双精度浮点(double)。
一个浮点数隐含为双精度浮点型(double型)。这句话的意思是指"float number = 3.0;"中的number是单精度浮点型(float型),但是3.0是双精度浮点型(double型)。当要将一个双精度浮点型强制表示为单精度浮点型时,需在后面加字母f或F。所以若声明float型变量时如果数的后面不加f或F,系统会认为是double型而出错。
double型的精度是float型的2倍,所以又称为双精度型。
布尔型
布尔型(boolean)也称为逻辑型,表示逻辑值。它只取true和false两个值。其中,true表示“真”,false表示“假”,true和false不能转换成数字形式。
所有的关系运算的返回值都是逻辑型的值,关系运算如a>b。逻辑型用于控制语句种的条件表达式,如if、while、for等语句。
字符型
字符型(char)用于储存单个字符。Java语言中的字符采用的是Unicode字符集编码方案,在内存中占2字节,是16位无符号的整数。
字符型数据的声明只能表示单个字符,且必须使用单引号将字符括上。如“char m = 'a';"中单引号里只能有单个字符,不能是单词。
字符型数据可以强制转换成int类型,如(int)’a‘表示字母a在Unicode字符集中的取值。取值范围在0-65535范围内的int型也可以强制转换为char型,如”int c = 12345;char s = (char)c;“。
Java中的基本数据类型表
| 数据类型 | 数据位 | 关键字 | 占用字节数 | 默认数值 |
|---|---|---|---|---|
| 布尔型 | 8 | boolean | 1 | flase |
| 字节型 | 8 | byte | 1 | 0 |
| 短整型 | 16 | short | 2 | 0 |
| 整型 | 32 | int | 4 | 0 |
| 长整型 | 64 | long | 8 | 0L |
| 单精度浮点型 | 32 | float | 4 | 0.0F |
| 双精度浮点型 | 64 | double | 8 | 0.0D |
| 字符型 | 16 | char | 2 | '\u0000' |
| 关键字 | 取值范围 |
|---|---|
| boolean | true,flase |
| byte | -128~127 |
| short | -32 768~32 767 |
| int | -2 147 483 648~2 147 483 647 |
| long | -9 223 372 036 854 775 808~9 223 372 036 854 775 807 |
| float | 负数范围:-3.402 823 5E+38~-1.4E-45 正数范围:-1.4E-45~3.402 823 5E+38 |
| double | 负数范围:-1.797 693 134 862 315 7E+308~-4.9E-324 正数范围:4.9E-324~1.797 693 134 862 315 7E+308 |
| char | ’\u0000‘~'\uffff' |