专栏首页Java技术栈详解 Java 的八大基本类型,写得非常好!

详解 Java 的八大基本类型,写得非常好!

原文:https://dev.to/renegadecoder94/the-8-primitive-types-in-java-10cl

作者:Jeremy Grifski,译者:弯月,责编:郭芮

出品:CSDN(ID:CSDNnews

自从Java发布以来,基本数据类型就是Java语言中重要的一部分,本文就来详细介绍下每种基本类型的具体使用方法和限制。

几年前,我开始编写了一系列有关Java入门的文章,我觉得有必要将其中一些非常细节的内容单独拿出来写成文章。这样,那些入门内容就更容易理解了。首先,我来介绍一下有关Java 8中的基本类型。

如题所述,Java语言本身有8种基本类型。在下面几节中,就让我们一起来看看这8种基本类型。我将针对每种基本类型,介绍具体的使用方法和限制。

int基本类型

首先,Java的整数是32位有符号(即包括正值和负值)整数,由int关键字表示:

int someNumber = 10;

当然,像所有基本类型一样,整型有自己的限制。由于它只有32位,所以其取值范围为-2147483648到2147483647。这数字很大嘛!当然,我们可以在DrJava的交互面板中用下述技巧来确认:

Integer.MAX_VALUE // Prints 2,147,483,647
Integer.MIN_VALUE // Prints -2,147,483,648

自然地,对于简单的计算而言,int是最常用的整数类型。如果你需要更大的数字范围,请参照下面的long。

double基本类型

与int不同,Java的双精度类型是64位浮点数,由double关键字表示:

double someNumber = 110.55;

需要提醒的是,浮点数实际上就是实数。换句话说,双精度浮点数中包含小数点。由于双精度类型是64位,它能表示的数字要比整型多很多。同样,我们可以利用交互面板来确认双精度类型的范围:

Double.MAX_VALUE // Prints 1.7976931348623157E308
Double.MIN_VALUE // Prints 4.9E-324

需要注意的是,负的指数表示的是非常小的数字,而不是非常大的负数。所以这里的取值范围跟整数不是完全一样。一般而言,double是在Java中使用浮点数的默认选择。另一个选择是float。

char基本类型

我们已经看到,Java的字符类型表示16位字符,由char关键字表示:

char someCharacter = 'f';

Java中所有的字符都用单引号表示。同时,双引号用来表示字符串。我们稍后会讨论字符串。与往常一样,我们可以通过下面的代码找出字符的范围:

Character.MAX_VALUE // Prints '???'
Character.MIN_VALUE // Prints ''

为了让这个范围有意义,我们可以将结果转换成整数(稍后会更多地介绍):

(int) Character.MAX_VALUE // Prints 65535
(int) Character.MIN_VALUE // Prints 0

可见,char类型是Java中唯一的无符号类型。换句话说,字符的取值范围为0到65535,每个值映射到特定的字符。如果需要创建该范围之外的字符,可以将一对字符组合起来。

参见“在Java中反转字符串”(https://therenegadecoder.com/code/reverse-a-string-in-java/)这篇文章中的例子。关注微信公众号:Java技术栈,在后台回复:java,可以获取我整理的 N 篇最新 Java 技术教程,都是干货。

byte基本类型

当我们讨论二进制时,我们讨论的实际上是比特的概念。而8个比特组成一个字节,字节是Java支持的基本类型之一。本质上,byte类型只不过是取值范围为-128到127的8位整数。

可以猜到,字节由byte关键字表示:

byte someByte = 20;

同样,可以利用下面的代码片段来确认byte类型的取值范围:

Byte.MAX_VALUE // Prints 127
Byte.MIN_VALUE // Prints -128

根据我的经验,byte类型在读取和处理原始数据时非常有用。但是一般而言,我们不会使用它,因为取值范围太小了。推荐:为什么byte取值-128~127? 这是为什么呢?

short基本类型

short是另一种整数类型,但它占用的空间要比int类型更小。实际上,它的占用空间正好是int类型的一半,为16位,由short关键字表示:

short someNumber = 11;

short类型的取值范围也只有整数的一半,我们可以用下述代码确认:

Short.MAX_VALUE // Prints 32767
Short.MIN_VALUE // Prints -32768

在实际应用中,short只有65546个可能的值。在内存空间和磁盘空间受限的情况下,我们会使用byte和short。但在其他情况下,在定义整数时默认使用int更为安全。

long基本类型

与short相反的是long基本类型,即长整数。该类型用来表示比int类型还要大的非常大的数。long类型是64位有符号整数,其取值范围超过了10的18次方。通常,长整数用long关键字表示:

long someBigNumber = 1013401346173L;

下面的代码可以查看64位值究竟有多大:

Long.MAX_VALUE // Prints 9,223,372,036,854,775,807
Long.MIN_VALUE // Prints -9,223,372,036,854,775,808

也许,long可以用来计算光在一定时间内走过的距离。光在一秒内大约传播30万千米。如果编写一个程序来跟踪光走过的距离,那么7秒后int类型就超出范围类,而long类型能够计算大约975年。

不相信吗?可以看看这个gist

(https://gist.github.com/jrg94/820d3f0f482dd19f0170964346381df0)中的计算。

float基本类型

虽然我们通常使用64位浮点数类型double,但Java还支持另一种浮点数类型,叫做float。但与int类似,Java默认情况下使用double表示浮点数。不管怎样,我们可以用float来表示32位浮点数类型:

float someNumber = 11.4f;

float类型的范围如下:

Float.MAX_VALUE // Prints 3.4028235E38
Float.MIN_VALUE // Prints 1.4E-45

可见,32位浮点数的范围和精度都要小得多。如果不需要double的精度,同时节省一半的空间,那么可以选择float类型。

boolean基本类型

最后我们来讨论一下boolean类型。定义布尔类型可以使用boolean关键字:

boolean isBool = true;

布尔类型有些特殊,不像其他基本类型那样,它们表示的不是数字值。实际上,之前使用的MAX_VALUE和MIN_VALUE技巧在这里不能使用。相反,它表示的是true或false,即真和假。

在此,我不打算详细介绍布尔类型,因为在Java中做任何事情都会涉及到布尔类型。尽管如此,我们通常不会明确地声明布尔类型。相反,许多代码逻辑中的比较操作的结果都是布尔类型。)

本文分享自微信公众号 - Java技术栈(javastack)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 关于Java你不知道的10件事

    作者: Lukas Eder 原文:10 Things You Didn’t Know About Java 来源:oschina 译文:www.oschina...

    Java技术栈
  • Spring Boot 集成 Ehcache 缓存,三步搞定!

    本次内容主要介绍基于Ehcache 3.0来快速实现Spring Boot应用程序的数据缓存功能。在Spring Boot应用程序中,我们可以通过Spring ...

    Java技术栈
  • Spring Cloud Eureka 常用配置详解,建议收藏!

    前几天,栈长分享了 《Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!》,今天来分享下 Spring Cloud Eure...

    Java技术栈
  • [UWP]依赖属性2:使用依赖属性

    以上代码为一个相对完成的依赖属性例子(还有一些功能比较少用就不写出了),从这段代码可以看出,自定义依赖属性的步骤如下:

    dino.c
  • Django实现统计网站访问次数、访问 ip 、受访页面

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    菲宇
  • windows下的C++ socket服务器(3)

    int make_server_socket(int port) { WSADATA inet_WsaData;//1 WSAStar...

    magicsoar
  • 一分钟制作专辑!AI创作的音乐也能让你蹦到嗨

    不管是Siri还是小E,不管是天猫精灵还是小度,AI语音助手的功能越来越强大,但说到底它们都还只是一个“没有感情的杀手”罢了。

    大数据文摘
  • 宅在家里读论文!维普中文期刊,今起免费开放!

    在全国人民勠力同心抗击新型冠状病毒感染的肺炎疫情之际,维普网(www.cqvip.com)自2019年1月29日起在疫情防控期间免费向读者开放学术论文的下载权限...

    统计学家
  • 在同一个workprocess里对两张表分别使用online update和update function module update

    用一个report测试,表1是直接online update,表2在update function module里update,由于有了SET UPDATE T...

    Jerry Wang
  • 在终端显示一个圣诞树

    最近真的是太懒了,懒得更新博客了都,这篇博客本来应该早就写出来的,下面介绍一个脚本,是一个大神写的,就是在你的终端上显示一颗圣诞树

    bboysoul

扫码关注云+社区

领取腾讯云代金券