java原始类型和引用类型_Java中的8种原始类型

java原始类型和引用类型

几年前,当我开始编辑Java Basics系列时,我认为将一些非常详细的信息拉到自己的帖子中是很有意义的。 这样,初学者的内容就更容易消化了。 首先,我将介绍有关Java的8种原始类型的所有信息。

Java基本类型

正如本文标题所暗示的,Java语言内置了8种原始类型。 在以下小节中,我们将不按特定顺序查看所有八个基本类型。 对于每种原始类型,我们将描述如何使用它以及它的局限性。

原始类型

首先,Java整数是32位带符号的(表示正数或负数)值,并由int关键字表示:

 int someNumber = 10 ; 

当然,像所有基本类型一样,整数也有其局限性。 由于它们是32位的,因此我们要查看的范围是-2,147,483,648到2,147,483,647。 有很多数字! 当然,我们可以使用DrJava的交互窗格中的便捷技巧来确认该范围:

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

自然, int可能是用于简单计算的最常见的整数类型。 如果您需要更多的范围内,看到long的下方。

双重原始类型

int不同,Java double是64位浮点值,它们由double关键字标记:

 double someNumber = 110.55 ; 

提醒一下,浮点数只是实数。 换句话说,当我们使用双精度时,我们可以访问小数点。

由于双精度数是64位的,因此与整数相比,我们可以访问的数字明显更多。 如果我们使用相同的“交互”窗格技巧,则可以找出潜在值范围的巨大程度:

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

请记住,负指数意味着极小的数字(相对于极负的数字),因此我们并不是在寻找与整数相同的范围。

通常, double是Java中浮点值的默认选择。 替代方法是float

字符基本类型

正如我们已经看到的,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到65,535,其中每个数字都映射到一个特定的字符。 为了创建超出此列表的字符,Java可以组合成对的字符。 请查看Java中的“反向字符串”示例。

字节原始类型

当我们谈论二进制时,我们谈到了一点概念。 好吧,一组八位组成一个字节,Java将其作为原始类型来支持。 byte类型本质上只是8位数字,范围从-128到127。如所期望的,字节由byte关键字表示:

 byte someByte = 20 ; 

与往常一样,我们可以使用以下代码片段来确认byte类型的范围:

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

以我的经验, byte类型对于读取和处理原始数据很有用。 但是,总的来说,由于电位值的范围太小,我们可能没有用。

短原始类型

short类型是另一个整数类型,但是它比int类型占用更少的空间。 实际上,它只占用16位的一半空间,并用short关键字标记:

 short someNumber = 11 ; 

就范围而言, short类型仅将整数的一半作为时钟输入,但是我们可以像往常一样确认这一点:

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

出于实际目的, short仅具有65,546个可能值。 当内存和磁盘空间不足时,通常同时使用byteshort byte 。 否则,使用int是安全的,因为在声明整数时它是默认类型。

长原始类型

在频谱的另一端是long原始类型。 此类型表示极大的整数,我们可能希望这些整数甚至大于int类型可以提供的值。 long类型是一个64位带符号整数,这意味着值的范围为5百亿分之一。

当然,我们表示与多头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时间会有用。 一秒钟后,光传播约3亿米。 如果我们编写了一个程序来实时跟踪光的距离,则int类型将在大约7秒钟后消失,而长类型可以计算出大约975年。 不相信我吗 检查一下整个计算过程中的要点 。

浮点原始类型

虽然我们经常使用double ,它是64位浮点数类型,但是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_VALUEMIN_VALUE小技巧在这里不起作用。 取而代之的是,布尔值表示true还是false ,我们可能会从上一堂逻辑课中回忆起。

我们现在不会花很多时间,因为它将成为我们在Java中所做的几乎所有事情的一部分。 也就是说,我们通常不会像这样明确声明它们。 相反,它们是比较的结果,这些比较驱动代码中的逻辑。 请查看下面的布尔运算符部分以获取更多信息。

想了解更多?

如前所述,该信息可以在Java的基本类型和变量文章中找到。 当然,现在该文章更容易阅读。

无论如何,再次感谢您的支持。 下次见!

翻译自: https://www.javacodegeeks.com/2019/08/8-primitive-types-java.html

java原始类型和引用类型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332021.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

androidtabhost缓存_FragmentTabHost布局的使用及优化方式

欢迎Follow我的GitHub, 关注我的简书. 其余参考Android目录.TabHostAndroidFragmentTabHost作为Android4.0版本的控件, 已经被项目广泛使用, 5.0版本又推出TabLayoutViewPager显示多页. 我来讲解如何使用FragmentTabHost.本文源码的GitHub下载地址主要包括:(1) 自定义Tab的图片…

二叉查找树

【0】README 0.1)本文的重点在于介绍 二叉查找树的概念,以及写出 二叉查找树的操作例程的源代码, 其中当属delete 操作的源代码最不容易实现; 0.2)本文源代码均为原创, 当然 代码中的idea 是借鉴人家的&a…

常用的命名规范/命名规则

文章目录骆驼式命名法(CamelCase)帕斯卡命名法(PascalCase)串式命名法(KebabCase)下划线命名法(UnderScoreCase)骆驼式命名法(CamelCase) 也叫小驼峰式命名法…

spring order_Spring @Order批注

spring order介绍: Spring Order注释是在Spring 2.0中首次引入的。 然后,它仅用于定义AspectJ建议中的顺序。 在Spring 4.0的后面,对该注释的实现进行了进一步改进。 从那时起,它还支持对Java数组或List之类的集合中的Spring组件或…

AVL树

【0】README 0.1)本文给出了平衡二叉树(AVL树)的插入例程涉及到的单旋转双旋转的概念,并给出了代码实现; 0.2)本文源代码均为原创, 当然相关idea 还是借鉴人家的;(真心…

spring 注释_Spring@懒惰注释

spring 注释介绍: 默认情况下, Spring框架在应用程序启动时加载并热切初始化所有bean。 在我们的应用程序中,我们可能有一些非常消耗资源的bean。 我们宁愿根据需要加载此类bean。 我们可以使用Spring Lazy批注实现此目的 。 在本教程中&…

管理系统的账户设计(涉及注册/登录逻辑)

文章目录方案一方案二方案三方案一 类似华为云IAM(Identity and Access Management 身份和访问管理)用户,阿里云的 RAM(Resource Access Management 资源访问管理)用户 机构有独立的账户(主账户&#xff…

opencv生成日志_OpenCV-Utils学习日志:VideoCapture使用样例

1.VideoCapture可以打开多种来源的数据流,但常见的是相机、视频及图像序列三类数据流:(1)打开相机数据流,需要指定相机在主机上的设备编号,若主机上只有一个相机则编号通常是0。(2)打开视频数据流,需要指定视频的完整路…

jdbc查询序列_JDBC –模拟序列

jdbc查询序列也许我们每个人在程序员的生活中至少遇到过一次这个问题- 如何模拟数据库序列? 在下面,您可能会发现我对该问题解决方案的各种了解。 假设我们有一个接口定义了所需的API,用于返回整数序列: public interface Sequen…

利用 GregorianCalendar 制作当前月的月历

【0】README 0.1)本文文字总结于 core java volume 1 , 源代码均为原创; 0.2)本文旨在熟悉 GregorianCalendar 日历类,每一天就是一个GregorianCalendar 日历类,一天有很多的日历属性,觉得用它…

pyecharts怎么绘制散点图_PyeCharts绘制各种图形

简介PyeCharts 是一个用于生成 Echarts 图表的类库,用其生成的图可视化效果非常棒,而且使用起来非常简单。下面是一些常用图的pyecharts实现方法柱状图bar pye.Bar("柱状图")#新建柱状图bar.add("服装", #图例名称["衬衫"…

junit junit_穿越JUnit流

junit junit关于JUnit 5迁移的好处之一是,您可以在老式模式下运行JUnit 4测试,并且所有内容仍然兼容。 不利的一面是,某些注释和方法在JUnit 4和JUnit 5中具有相同的名称,并且当两组库依赖项都可用时,很容易导入错误的…

被遗忘的软件产品形态

从2010年以后,很多公司开发的软件产品,很少有客户端了,web2.0之后,主流的业务系统基本上都是基于Web去构建业务系统。这几年见到的业务应用系统都是基于Web的构建的。而在To C市场,几乎就没有客户端了,都是…

vue进行判断使用class_vue判断dom的class

vue点击给dom添加class然后获取含有class的dom{{item.name}}{{item2.name}}jschek(index2, index) {this.iac[index2] indexthis.iac this.iac.concat([]);this.checkchose()},checkchose:function(){var chosethisvar chosedomchose.$refs.choseboxconsole.log(chosedom)for…

方法参数的值调用+引用调用+深浅拷贝

【0】README 0.1)本文描述源代码均 转自 core java volume 1, 旨在理清值调用引用调用; 【1】参数传递给方法的专业术语: 1.1)值调用:它表示方法接收的是调用者提供的值; 1.2)引用…

设计模式 工厂方法_工厂方法设计模式

设计模式 工厂方法工厂方法模式是流行的创作设计模式之一。 它并不特别依赖于工厂对象来创建对象。 而是要在同一类中使用单独的方法来创建对象。 Factory Method模式定义了一个用于创建对象的接口,但是让子类决定如何实例化其对象。 每个子类必须定义其Factory方法…

靖江机器人怎么样_铁饭碗不保?靖江可能消失的12大职业!快看有你的工作没?...

原标题:铁饭碗不保?靖江可能消失的12大职业!快看有你的工作没?无人飞机、无人驾驶、智能机器人....你能想象这些充满现代感的高科技正在改变我们的生活吗?在科技高速发展的今天人工智能逐渐能够代替人类的部分工作但&a…

MarkdownPad 汉化破解(含下载地址)

转自 http://jingyan.baidu.com/article/ca41422fe209271eaf99ed7c.html MarkdownPad是一个全功能Markdown编辑器的Windows。 【1】MarkdownPad 汉化破解(含下载地址) 工具/原料 MarkdownPad 2.4 方法/步骤 软件 下载地址(本软件为绿色版…

捡对象引流脚本 内容_对象和索引流

捡对象引流脚本 内容我本来要写一篇关于如何将流与每个元素的索引混合的文章,但是Baeldung上的人们已经很好地涵盖了这个主题 ! 鉴于我是他们编辑团队的一员,我为他们/我们感到自豪。 有趣的是,特别是Streams中的Java函数式编程如…

散列之再散列

【0】README 0.1)本文描述总结于 数据结构与算法分析, 但源代码为原创; 0.2)为什么写这篇博文? 再散列的代码实现 包括了 解决冲突的方法实现;很有代表性;(本源代码采用的解决冲突…