10. 【Java教程】Java 基本数据类型

简介: 10. 【Java教程】Java 基本数据类型

前面我们学习了变量,每个变量都是有数据类型的。在 Java 中,一共有两大数据类型:


基本数据类型(内置数据类型)

引用数据类型

本小节,我们将主要介绍基本数据类型,除了我们在示例中经常用到的 int 类型外,Java 语言还有其他 7 种基本数据类型。它们由语言预先定义,也称内置数据类型,顾名思义,它们是 Java 语言中最基本的数据类型。另外注意:引用数据类型并不属于基本数据类型的范畴,我们将在后面讲解。


Java 语言支持 8 种基本数据类型:byte,short,int,long,float,double,char 和 boolean

1. 分类和特点

1.1 分类

基本数据类型定义在 Java类型系统中,在类型系统中,又可将基本类型分为三大类:


数字型:包含 short、int、long、float 和 double,只能存储数字数据;

字符型:byte 和 char,只能存储字符数据;

布尔类型:boolean,只能存储 true(真) 或 false(假)。

1.2 范围和默认值

基本类型都有固定的大小,因此,基本类型的值会被限制在一个范围内。

另外,在声明变量时,不一定总是需要分配值。编译器会将已声明但未初始化的字段设置合理的默认值。但是,建议为每个变量都赋初始值,这是很好的编程习惯。

具体的范围和默认值,请参考下表:

1.3 常见错误

在编码过程中,要特别注意变量不要超出其类型的范围,请查看如下示例:

实例演示

public class MemoryOverflow {
    public static void main(String[] args) {
        // Integer.MAX_VALUE 用来int类型能存储的最大值
        int maximumValue = Integer.MAX_VALUE;
        System.out.println("int类型能够存储的最大值为:" + maximumValue);
        System.out.println(maximumValue + 1);
    }
}
int 类型能够存储的最大值为2147483647
-2147483648

我们发现 int 类型能存储的最大值加 1 之后,变成了一个负数,这个数其实就是 int 类型能够存放的最小值,这是因为加 1 之后变量超出了 int 类型能够存储的最大值,这就是我们常常说的内存溢出错误。


还要特别注意一点,由于 Java 是强类型的,每个变量都有一个类型,只有给定种类的值能够存储到该变量中。例如,不能将浮点型的数字赋值给整型变量:

public class IncompatibleTypeError{
    public static void main(String[] args) {
        int age;
        age = 20.5f;
    }
}

源代码在编译阶段就会报错:

$ javac IncompatibleTypeError.java
IncompatibleTypeError.java:4: 错误: 不兼容的类型: 从float转换到int可能会有损失
        age = 20.5f;
              ^
1 个错误

2. 整型

整型就是整数类型,和数学中的整数意义相同,例如:

// 声明一个整型变量age
int age = 10;
// 声明一个整型变量 score
int score = 100;

整型除了 int 类型,还有 shortlong 类型,也就是短整型和长整型,他们用于存放不同范围的整数值。需要注意的是,long 类型的值后面要以大写字母 L 或小写字母 l 结尾。请阅读以下代码:

// 声明一个短整型变量a
short a = 20;
// 声明一个长整型变量b
long b = 100l;
// 声明一个长整型变量c
long c = 100L;

Tips:对于长整型,推荐后面总以大写字母 L 结尾,因为小写字母 l 与数字 1 容易混淆。


和数学一样,计算机中的整型也有进制的概念,Java 可以通过以下几种进制系统表示:


十进制:基数为 10,由 0 到 9 组成; 这是我们日常生活中使用的数字系统;

十六进制:基数为 16,由数字 0 到 9 和字母 A 到 F 组成;

二进制:基数为 2,由数字 0 和 1 组成。

Java 中,十六进制和二进制需要以前缀区分,前缀 0x 表示十六进制,前缀 0b 表示二进制,我们来看一个示例:

1.// 十进制表示数字10
int decimalValue = 10;
// 十六进制表示数字10
int hexadecimalValue = 0xA;
// 二进制表示数字10
int binaryValue = 0b1010;

3. 浮点型

浮点类型就是数学中的小数,在 Java 中,浮点型又可分为单精度浮点型 (float) 和双精度浮点型 (double)。需要注意的是,float 类型的值必须要以大写字母 F 或小写字母 f 结尾,我们来看一个示例:

float f1 = 1.2f;
float f2 = 10.56F;

ouble 类型的值可以以字母 Dd 结尾,但不做强制:

// 声明三个double类型变量,其值都为123.3
double d1 = 123.3;
double d2 = 123.3D;
double d3 = 123.3d;

另外浮点类型也可以使用字母 Ee,后面跟上次方的数值,来表示数学中的科学计数法,我们来看一个示例:

// 科学计数法表示的 123.4
double d2 = 1.234e2;
float f1  = 1.234e2f;
// 科学计数法表示 200022.1
double d3 = 2.000221e5

4. 布尔类型

布尔类型 boolean 只有两个可能的值:truefalse,它是用于跟踪判断条件真假的标志。

1. boolean b1 = true;
2. boolean b2 = false

我们将在后面学习条件语句的时候经常使用。这时布尔类型才能发挥它真正的价值,这里不再赘述。

5. 字符类型

字符类型 char 表示一个字符。Java 中的 char 类型除了可表示标准的 ASCII 外,还可以表示一个 Unicode 字符:

实例演示

public class CharType {
    public static void main(String[] args) {
        // 存放一个 ASCII 码
        char a = 97;
        // 存放一个Unicode字符
        char zh = '码';
        System.out.println(a);
        System.out.println(zh);
    }
}

运行结果:

a
码a

Java 语言还为 charString 类型(String 类型将在后面单独讲解),支持一些特殊的转义序列: image.png

6. 小结

学完了本小节,我们来回顾一下,Java 提供两大类型:基本数据类型和引用数据类型。一共有 8 种基本数据类型。基本类型又可分为数字型(整型和浮点型),字符型以及布尔型。在编码时要注意,为变量所赋的值不要超出其类型的范围

相关文章
|
11天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
37 4
|
10天前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
24 1
|
16天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
16天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
16天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
|
25天前
|
JSON Java Maven
实现Java Spring Boot FCM推送教程
本指南介绍了如何在Spring Boot项目中集成Firebase云消息服务(FCM),包括创建项目、添加依赖、配置服务账户密钥、编写推送服务类以及发送消息等步骤,帮助开发者快速实现推送通知功能。
61 2
|
25天前
|
存储 Java 关系型数据库
[Java]“不同族”基本数据类型间只能“强转”吗?
本文探讨了不同位二进制表示范围的计算方法,重点分析了Java中int和char类型之间的转换规则,以及float与int类型之间的转换特性。通过具体示例说明了显式和隐式转换的条件和限制。
33 0
[Java]“不同族”基本数据类型间只能“强转”吗?
|
1月前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
|
1月前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
本系列教程笔记详细讲解了Kotlin语法,适合希望深入了解Kotlin的开发者。对于需要快速学习Kotlin的小伙伴,推荐查看“简洁”系列教程。本篇笔记重点介绍了Kotlin与Java混编的技巧,包括代码转换、类调用、ProGuard问题、Android库开发建议以及相互调用时的注意事项。
24 3
|
23天前
|
存储 Java 编译器
[Java]基本数据类型与引用类型赋值的底层分析
本文详细分析了Java中不同类型引用的存储方式,包括int、Integer、int[]、Integer[]等,并探讨了byte与其他类型间的转换及String的相关特性。文章通过多个示例解释了引用和对象的存储位置,以及字符串常量池的使用。此外,还对比了String和StringBuilder的性能差异,帮助读者深入理解Java内存管理机制。
18 0