数据类型

在前面我们编写了一个最简单的Java程序,告诉电脑在屏幕上打印“Hello World!”这样一句话。用英文双引号包围起来的一系列符号、一系列字符,在Java中叫做字符串,英文单词是String。字符串很好理解,就是包含一串字符的字符序列。

字符串是一种数据类型。Java除了支持字符串,还支持其他数据类型,比如整数、小数等等。接下来我们一起通过代码来学习这些数据类型。

为了大家对齐学习起点,这里我们统一新创建一个名叫“Data-Types-Demo”的Java工程。创建新工程的主要目的是防止出现代码混乱,不仅会很方便大家后面回顾代码,而且能够保证我与大家对齐代码。

接下来示例一种在IntelliJ IDEA中创建Java工程的新方式。假设现在我们的电脑上打开了前面的HelloWorld工程,如下图,

在左上角有一个处于折叠状态的“汉堡包”菜单按钮,我们点击一下。点击后马上弹窗一个新窗口,

我们继续点击第一项“New”,然后在右边紧接着弹窗出另外一个窗口,

我们仍然点击第一项“Project”。这个时候界面来到我们前面熟悉的新建工程主窗口,

在这里我们给这个新Java工程命名,比如取名为“Data-Types-Demo”。指定好工程文件保存目录后,其他选项保持和前面第一次创建Java工程一样。最后点击一下“Create”按钮。

软件自动打开新工程后,我们仍然先在src目录下添加一个Java源代码文件。大家不妨统一将这个新源文件命名为“DataTypesDemo”。做完这些步骤后的界面如下,

添加新源文件的工程这里省去了一些图示,要是大家遇见困难了,可以回顾一下运行我们的第一个Java程序当时的做法,教程里面有详细的步骤图示。

接下来就到了编写代码的时候,第一步就是添加我们的main方法,

public class DataTypesDemo {
    public static void main(String[] args) {

    }
}

当教程里面没有特别说明的时候,我们编写的代码都位于main方法后面的花括号中,也就是代码结构里面的第二对花括号。

现在是最好的时机来一边编写代码,一边学习Java中的数据类型新知识点。电脑在发明之初就是用来进行计算的,最早的计算机的功能跟我们现在的高级计算器差不多。我们自然想到Java支持的数据类型就是整数、小数这些。

没错,Java支持的第一类数据类型就是整数。如果我们这样编写代码,

System.out.println(10);

运行这个程序后,屏幕上会显式整数10,

10

这里我们使用“System.out.println()”来打印数字,不再是仅仅打印双引号里面的内容,如“Hello World!”。对于小数呢,如果这样编写代码,

System.out.println(3.14159);

运行这行代码后,屏幕上会显式精确到五位小数的圆周率,

3.14159

同样是整数,Java还细分了不同范围的数据类型。

整数类型

在Java中,整数类型(也常常简称为整型),包含字节类型、短整型、常规整型以及长整型,它们所表示的数值范围逐渐扩大。

第一种字节类型,在内存里面占用8个比特位,可以表示-128到127这个闭区间的所有整数。

public class DataTypesDemo {
    public static void main(String[] args) {
        System.out.println(10);
        System.out.println(3.14159);
        // 最小字节型整数-128
        System.out.print("最小字节型整数");
        System.out.println(-128);
        // 最大字节型整数127
        System.out.print("最大字节型整数");
        System.out.println(127);
    }
}

如果大家运行上面这段代码,屏幕上会显式

10
3.14159
最小字节型整数-128
最大字节型整数127

这段代码示例了一些新用法,一是我们可以在代码中多次使用“System.out.println()”,Java程序在运行时会一条命令一条命令地执行。

另外也出现了一个新用法“System.out.print()”,它的作用和“System.out.println()”基本完全一样,只是二者表现效果不同。println()在屏幕上打印完后,会自动换行,相反print()打印完后不换行。

现在继续回到数据类型上面,第二种整数类型是短整型,其在内存里面占用16个比特位,可以表示-32768到32767这个范围的整数。

对于常规整型,在内存里面占用32个比特位,可以表示-231到231-1这个范围的所有整数,也就是从-2,147,483,648到2,147,483,647。因此在Java编程中绝大部分时间会用到常规整型,很少有数值会超过这个量级,毕竟这是一个二十亿左右的数。

对于长整型,其在内存里面占64个比特位,可以表示-263到263-1这个范围的所有整数,也就是-9,223,372,036,854,775,808到9,223,372,036,854,775,807。如果我们需要表示的整数远远超过二十亿这个量级,比如地球上的总人口,这种情况下会使用长整型。

需要注意的是,在字面上如果我们对一个整数不加标识,Java默认其是一个常规整型的数字。

System.out.println(3000000000);

如果我们直接像上面这样编写代码,IntelliJ IDEA会在数字部分用红色下划波浪线提示,将鼠标悬停到标红位置,会弹出小窗口提示“整数过大”。为了区分确实是使用的长整型整数,我们需要在数字末尾添加后缀l(小写字母l)或者L。

System.out.println(3000000000L);

推荐大家使用大写字母L来标识,因为小写字母l在字面上看起来很像数字1。

浮点数类型

浮点数也叫小数,这个称呼是从单词Float直译过来的。在Java中,按照对小数的表示的精度不同,浮点数类型分为单精度浮点数和双精度浮点数。

单精度浮点数在内存中占32个比特位,最高精度只能支持到第八位小数;双精度浮点数在内存中占64位,最高能支持到十七位小数。

仍然需要注意的是,在字面上Java默认将一个小数看作双精度浮点类型。因此为了区分我们确实是想表示一个单精度浮点数,需要添加后缀f或者F。

System.out.println(0.123456789F);
System.out.println(0.12345678901234567890);

如果大家运行上面这段代码,屏幕上会显式

0.12345679
0.12345678901234568

容易看到,在表示单精度浮点数时,Java默认在第八位小数部分进行了四舍五入;同理,在表示双精度浮点数时,程序也在第十七位小数部分进行了四舍五入。

此外,Java也支持用科学计数法表示的浮点数。如果运行下面这段代码,

System.out.println(1e-2);
System.out.println(1e2);
System.out.println(1E-2);
System.out.println(1E2);

我们的屏幕上将会显式

0.01
100.0
0.01
100.0

字符类型

除了支持像整数、小数这样的数值类型,Java也支持字符,相应地也就叫做字符类型。

字符类型在内存里面占16个比特位,可以表示编号为0到65535这个范围的所有字符,也叫做Unicode字符集。

如果想在屏幕上打印字母a,可以这样编写代码

System.out.println('a');

与字符串不同,表示单个字符需要用英文单引号来包围。如果大家好奇Unicode字符集都是哪些字符,可以到这个页面查看。

布尔类型

布尔类型是对单词Bool的直译,可以用来表示逻辑真假值,在内存中会占用8个比特位。在Java中,逻辑真用true表示,反之false则可以用来表示逻辑假。

System.out.println(true);
System.out.println(false);

上面这段代码打印了逻辑真与逻辑假。如果运行这段代码,我们的屏幕上会显式

true
false

需要说明一下,对于字节类型、短整型、常规整型、长整型、单精度浮点类型、双精度浮点类型、字符类型以及布尔类型,这八大数据类型在Java中常常叫做基本类型,这是与字符串以及后面我们会接触的对象等其他数据类型区分。

关于数据类型,本节教程暂时到此为止,后面我们会针对性地学习字符串以及对象。

以下是本节教程的完整代码

public class DataTypesDemo {
    public static void main(String[] args) {
        System.out.println(10);
        System.out.println(3.14159);
        // 最小字节型整数-128
        System.out.print("最小字节型整数");
        System.out.println(-128);
        // 最大字节型整数127
        System.out.print("最大字节型整数");
        System.out.println(127);
        // 最小短整型-32768
        System.out.print("最小短整型");
        System.out.println(-32768);
        // 最大短整型32767
        System.out.print("最大短整型");
        System.out.println(32767);
        // 在字面上表示一个长整型需要在数字末尾加上后缀l或者L
        System.out.println(3000000000L);
        // 单精度浮点数最多只能精确到8位小数
        System.out.println(0.123456789F);
        // 双精度浮点数最多能精确到17位小数
        System.out.println(0.12345678901234567890);
        // 用科学计数法表示的小数
        System.out.println(1e-2);
        System.out.println(1e2);
        System.out.println(1E-2);
        System.out.println(1E2);
        // 字符类型
        System.out.println('a');
        // 布尔类型
        System.out.println(true);
        System.out.println(false);
    }
}

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注