【Java学习】03. Java 的数据类型和相互转换
Java是强类型语言,在强类型语言中每个变量有类型,每个表达式有类型,而且每种类型是严格定义的。其次,所有的数值传递,不管是直接的还是通过方法调用经由参数传过去的都要先进行类型相容性的检查。
Java有八种基本数据类型,三种引用数据类型,下面我们对这些数据类型逐一做介绍
基本数据类型
- 四种整数类型 (byte、short、int、long)
- 两种浮点数类型 (float、double)
- 一种字符类型 (char)
- 一种布尔类型 (boolean)
整数类型
Java只定义了带符号的整型,因此,最高位的bit表示符号位(0表示正数,1表示负数)。
byte
8 位,用于表示最小数据单位,如文件中数据,-128~127
short
16 位,-32768 ~ 32767
int
32 位,-231-1~231 -2147483648 ~ 2147483647
int i3 = 2_000_000_000; // 数字之间可以添加下划线方便人识别
long
64 位,-9223372036854775808 ~ 9223372036854775807
long类型数字的结尾需要加L,例如:
long a = 100000000000L;
浮点数类型
浮点类型的数就是小数,因为小数用科学计数法表示的时候,小数点是可以“浮动”的,如1234.5可以表示成12.345x102,也可以表示成1.2345x103,所以称为浮点数。
float
32 位,后缀 F 或 f
float a = 1.23e5f;
上述例子中,使用科学计数法,e代表 10^ 上述值可以表示为:1.23*10^5
double
64 位,最常用,后缀 D 或 d,可以不加后缀
char
16 位,是整数类型相当于无符号整型,用单引号括起来的 1 个字符(可以是一个中文字符),不能为0个字符。
注意char类型使用单引号',且仅有一个字符,要和双引号"的字符串类型区分开。
- 转义字符:
\n 换行 \r 回车 \t Tab 字符 " 双引号 \ 表示一个\ 两字符 char 中间用“+”连接,内部先把字符转成 int 类型,再进行加法运算,char 本质就是个数!二进制的,显示的时候,经过“处理”显示为字符。
boolen
8位,布尔类型boolean只有true和false两个值,布尔类型总是关系运算的计算结果
引用数据类型
除了上述基本类型的变量,剩下的都是引用类型。
- 数组
- 类
- 接口
数组
Java语言提供了数组(array)的数据结构,是一个容器可以存储相同数据类型的元素。数组接下来我会在一篇中详细说明。
类
Java是一门面向对象的编程语言,所以说类是它的核心,这个同上面的数组一样,会在之后一篇中详细说明。
接口
接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。详细内容会在之后一篇中详细说明。
Java数据类型的转换
这里也是先对类型转换有一个概念,具体的后续博客会有。
数据类型的转换可以分为隐式转换(自动类型转换)和显式转换(强制类型转换)两种。
隐式转换(自动类型转换)
如果以下 2 个条件都满足,那么将一种类型的数据赋给另外一种类型变量的时,将执行自动类型转换。
- 两种数据类型彼此兼容
- 目标类型的取值范围大于源数据类型(低级类型数据转换成高级类型数据)
当以上 2 个条件都满足时,拓宽转换发生。例如 byte 类型向 short 类型转换时,由于 short 类型的取值范围较大,会自动将 byte 转换为 short 类型。
转换规则如下:
显式转换(强制类型转换)
所以当两种数据类型不兼容,或目标类型的取值范围小于源类型时,自动转换将无法进行,这时就需要进行强制类型转换。
具体转换语法如下:
int a = 3;
double b = 5.0;
a = (int)b;
在强制类型转换中,如果是将浮点类型的值转换为整数,直接去掉小数点后边的所有数字;而如果是整数类型强制转换为浮点类型时,将在小数点后面补零。