0%

Java基本数据类型

Java是一种强类型语言,在声明变量的时必须指定数据类型。Java数据类型分为基本数据类型和引用类型,基本数据类型分为8种,也是我们编程中使用最频繁的类型,本篇文章简要介绍Java的八大数据类型。

八大数据类型一览

类型名称 类型定义 占用大小 取值范围 默认值 封装类
boolean 布尔值,用作二元判断 Java规范中,没有明确指出boolean的大小。JVM规范中,boolean变量作为int处理,也就是4字节,boolean数组当做byte数组处理。 true,false false java.lang.Boolean
char Unicode字符 2字节/16位 \u0000 ~ \uffff \u0000 java.lang.Character
byte 有符号整数 1字节/8位 -128 ~ 127 0 java.lang.Byte
short 有符号整数 2字节/16位 -32768 ~ 32767 0 java.lang.Short
int 有符号整数 4字节/32位 -2,147,483,648(-2^31) ~ 2,147,483,647(2^31-1) 0 java.lang.Integer
long 有符号整数 8字节/64位 -2^63 ~ 2^63-1 0L java.lang.Long
float 单精度浮点数 4字节/32位 1.4E-45 ~ 3.4028235E38 0.0F java.lang.Float
double 双精度浮点数 8字节/64位 4.9E-324 ~ 1.7976931348623157E308 0.0D java.lang.Double

注意:在Java中,默认声明的小数是double类型,默认声明的整数是int类型。

类型转换

整型、浮点型、字符型数据可以混合运算,运算中,不同类型的数据会转换成相同类型,然后进行运算。

低 ———————————————————-> 高

byte,short,char—>int—>long—>float—>double

从低级转到高级是自动类型转换,这是一种默认的转换,从高级转到低级需要强制类型转换,这么做可能会导致精度丢失。

1
2
3
4
5
6
7
8
9
byte a = 111;
// 自动类型转换
int b = a;
int c = 128;
// 强制类型转换导致精度丢失,因为byte类型是8位,最大值为127,所以当int强制转换为byte类型时,值128时候就会导致溢出,此处d实际值位-128
byte d = (byte) c;
double e = 1.23;
// 浮点型强制转换为整型是舍弃小数部分而不是四舍五入
int f = (int)e;

char类型转换为整型时会转为字符对应的ASCII码值。

不能对boolean类型进行类型转换。

类型的自动提升

在基本类型的混合运算中,最后的结果类型会是参与运算的最高级的类型, 关于类型的自动提升,注意下面的规则。

①所有的byte,short,char型的值将被提升为int型;

②如果有一个操作数是long型,计算结果是long型;

③如果有一个操作数是float型,计算结果是float型;

④如果有一个操作数是double型,计算结果是double型;

整型的进制

Java中默认声明整型的进制为十进制,当然也可以通过特殊的表示方法表示常用的二进制,八进制和十六进制。

1
2
3
4
5
6
7
8
// 十进制表示
int i = 10;
// 二进制表示
int a = 0b1010;
// 八进制表示
int b = 01067;
// 十六进制表示
int c = 0x2afc;

转义字符

Java中char类型包含一些特殊的转义字符,这些字符通常具有一些特殊的含义。

符号 字符含义
\n 换行 (0x0a)
\r 回车 (0x0d)
\f 换页符(0x0c)
\b 退格 (0x08)
\0 空字符 (0x20)
\s 字符串
\t 制表符
\" 双引号
\' 单引号
\\ 反斜杠
\ddd 八进制字符 (ddd)
\uxxxx 16进制Unicode字符 (xxxx)

包装类与自动拆装箱

八大数据类型都有其对应的包装类,参见类型一览表,包装类可以直接对其赋值(自动装箱),包装类可以直接参与运算(自动拆箱),包装类具有非常多的静态和普通方法,这扩展了基本类型的功能,这在平时的编码中会有很多的运用。