高考考试网
当前位置: 首页 高考资讯

Java核心技术卷I-3.3(Java核心技术卷I-3.3)

时间:2023-07-15 作者: 小编 阅读量: 3 栏目名: 高考资讯

Java核心技术卷I-3.3Java是一种强类型语言这就意味着必须为每一个变量声明一种类型在Java中,一共有8种基本类型(primitivetype),其中有4种整型,2种浮点型、1种用于表示Unicode编码的字符单元的字符。

Java核心技术卷I-3.3? Java是一种强类型语言这就意味着必须为每一个变量声明一种类型在Java中,一共有8种基本类型(primitive type),其中有4种整型,2种浮点型、1种用于表示Unicode编码的字符单元的字符类型char(请参见论述char类型的章节)和1章用于表示真值的boolean类型,我来为大家讲解一下关于Java核心技术卷I-3.3?跟着小编一起来看一看吧!

Java核心技术卷I-3.3

Java是一种强类型语言。这就意味着必须为每一个变量声明一种类型。在Java中,一共有8种基本类型(primitive type),其中有4种整型,2种浮点型、1种用于表示Unicode编码的字符单元的字符类型char(请参见论述char类型的章节)和1章用于表示真值的boolean类型。

注释:Java有一个能够表示任意精度的算术包,通常称为"大数值"(big number)。虽然被称为大数值,但它并不是一种新的Java类型,而是一个Java对象。本章稍后将会详细地介绍它的用法。

3.3.1 整型

整型用于表示没有小数部分的数值,它允许是负数。Java提供了4种整型,具体内容如表3-1所示。

思考:byte为什么是-128-127?

至于为什么8位是-128~127,是由于最高一位存储符号位,所以剩下7位代表数值大小,能从0表示到127

所以能从-127表示到127,但由于 0和-0都代表0,重复了,所以,多出一个位子,放到负数,让-0代表-128。

所以byte的范围是-128~127。

参考链接:blog.csdn.net/dicong9715/…

通常情况下,int类型最常用。但是如果表示星球上居住的人数,就需要使用long类型了。byte和short类型主要用于特定的应用场合,例如,底层的文件处理或者需要控制占用存储空间量的大数组。

在Java中,整型的范围与运行Java代码的机器无关。这就解决了软件从一个平台移植到另一个平台,或者在同一个平台中的不同操作系统之间进行移植给程序员带来的诸多问题。于此相反,C和C程序需要针对不同的处理器选择最为有效的整型,这样就有可能造成一个在32位处理器上运行很好的C程序在16位系统上运行却发生了整型溢出。由于Java程序必须保证在所有机器上都能够得到相同的运行结果,所以每一种数据类型的取值范围必须固定。

长整型数值有一个后缀L(如4000000000L)。十六进制数值有一个前缀0x(如0xCAFE)。八进制有一个前缀0,例如010对应八进制中的8。很显然,八进制表示法比较容易混淆,所以建议最好不要使用八进制常数。

C注释:在C和C中,int表示的整型与目标机器相关。在8086这样的16位处理器上整型数值占2字节;在Sun SPARC这样的32位处理器上,整型数值占4字节;而在Intel Pentium处理器上,C和C整型依赖于具体的操作系统,对于DOS和Windows 3.1,整型数值占2字节。当Windows程序使用32位模式时,整型数值占4字节。在Java中,所有的数值类型所占据的字节数量与平台无关。

注意,Java没有任何无符号类型(unsinged type)

3.3.2 浮点类型

浮点类型用于表示有小数部分的数值。在Java中有2种浮点类型,具体内容如表3-2所示。

double表示这种类型的数值精度是float类型的两倍(有人称之为双精度)。绝大部分应用程序都采用double类型。在很多情况下,float类型的精度很难满足需求。例如,用7位有效数字足以精确地表示普通雇员的年薪,但表示公司总裁的年薪可能就不够用了。实际上,只有很少的情况适用适用float,例如,需要快速地处理单精度数据,或者需要存储大量数据。

float类型的数值有一个后缀F(例如,3.402F)。没有后缀F的浮点数值(3.402)默认为double。当然,也可以在浮点数值后面添加后缀D(例如,3.402D)。

注释:在JDK 5.0中,可以使用十六进制表示浮点数值。例如,0.125可以表示成0x1.0p-3。

在十六进制表示法中,使用p表示指数,而不是e。注意,尾数采用十六进制,指数采用

十进制。指数的基数是2,而不是10。

所有的浮点数值计算都遵循IEEE 754规范。下面是用于表示溢出和出错情况的三个特殊的浮点数值:

• 正无穷大

public static final float POSITIVE_INFINITY = 1.0f / 0.0f;

• 负无穷大

public static final float NEGATIVE_INFINITY = -1.0f / 0.0f;

• NaN(不是一个数字)

public static final float NaN = 0.0f / 0.0f;

例如,一个正整数除以0的结果为正无穷大。计算0/0或者负数的平方根结果为NaN。

注释:常量Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY和Double.NaN

(与相应的Float类型的常量一样)分别表示这三个特殊的值,但在实际应用中很少遇到。

特别要说明的是,不能这样检测一个特定值是否等于Double.NaN:

if (x == Double.NaN)// is never true

所有“非数值”的值都认为是不相同的。然而,可以使用Double.isNaN方法:

if (Double.isNaN(x)) //check whether x is "not a number"

警告:浮点数值不适用于禁止出现舍入误差的金融计算中。例如,命令System.out.println

(2.0-1.1)将打印出0.8999999999999999,而不是人们想像的0.9。其主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确的表示分数1/10。这就好像十进制无法精确地表示1/3一样。如果需要在数值计算中不含有任何舍入误差,就应该使用BigDecimal类,本章稍后将介绍这个类。

3.3.3 char类型

char类型用于表示单个字符。通常用来表示字符常量。例如:'A'是编码为65所对应的字符常量。与"A"不同,"A"是一个包含字符A的字符串。Unicode编码单元可以表示为16进制值,其范围从\u0000到\uffff。例如:\u2122表示注册符号,\u03C0表示希腊字母π。

除了可以采用转义序列符\u表示Unicode代码单元的编码之外,还有一些用于表示特殊字符的转义序列符,请参看表3-3。所有这些转义序列符都可以出现在字符常量或字符串的引号内。例如,'\u2122'或"Hello\n"。转义序列符\u还可以出现在字符常量或字符串的引号之外(而其他转义序列不可以)。例如:

public static void main(String\u005B\u005D args)

这种形式完全符合语法规则,\u005B和\u005D是[和]的编码。

要想弄清char类型,就必须了解Unicode编码表。Unicode打破了传统字符编码方法的限制。在Unicode出现之前,已经有许多种不同的标准:美国的ASCII、西欧语言中的ISO 8859-1、俄国的KOI-8、中国的GB118030和BIG-5等等。这样就产生了下面两个问题:一个是对于任意给定的代码值,在不同编码方案下有可能对应不同的字母;而是采用大字符集的语言其编码长度有可能不同。例如,有些常用的字符采用单字节编码,而另一些字符则需要两个或更多个字节。

设计Unicode编码的目的就是要解决这些问题。在20世纪80年代开始启动设计工作时,人们认为两个字节的代码宽度足以能够对世界上各种语言的所有字符进行编码,并有足够的空间留给未来的扩展。在19911年发布了Unicode 1.0,当时仅占用65536个代码值中不到一半的部分。在设计Java时决定采用16位的Unicode字符集,这样会比使用8位字符集的程序设计语言有很大的改进。

十分遗憾,经过一段时间,不可避免的事情发生了。Unicode字符超过了65536个,其主要原因是增加了大量的汉语、日语和韩国语言中的表意文字。现在,16位的char类型已经不能满足描述所有Unicode字符的需要了。

下面利用一些专用术语解释一下Java语言解决这个问题的基本方法。从JDK5.0开始。代码点(code point)是指与一个编码表中的某个字符对应的代码值。在Unicode标准中,代码点采用十六进制书写,并加上前缀U ,例如U 0041就是字母A的代码点。Unicode的代码点可以分为17个代码级别(code plane)。第一个代码级别称为基本的多语言级别(basic mulitlingual plane),代码点从U 0000到U FFFF,其中包括了经典的Unicode代码;其余的16个附加级别,代码点从U 10000到U 10FFFF,其中包括了一些辅助字符(supplementary character)。

UTF-16编码采用不同长度的编码表示所有的Unicode代码点。在基本的多语言级别中,每个字符用16位表示,通常被称为代码单元(code unit);而辅助字符采用一对连续的代码单元进行编码。这样构成的编码值一定落入基本的多语言级别中空闲的2048字节内,通常被称为替代区域(surrogate area)[U D800--U DBFF用于第一个代码单元,U DC00--U DFFF用于第二个代码单元]。这样设计十分巧妙,我们可以从中迅速地知道一个代码单元是一个字符的编码,还是一个辅助字符的第一或第二部分。例如,对于整数集合的数学符号,它的代码点是U 1D56B,并且是用两个代码单元U D835和U DD6B编码的。

在Java中,char类型用UTF-16编码描述一个代码单元。

我们强烈建议不用再程序中使用char类型,除非确实需要对UTF-16代码单元进行操作。最好将需要处理的字符串用抽象数据类型表示(有关这方面的内容将在稍后讨论)。

3.3.4 boolean 类型

boolean(布尔)类型有两个值:false和true,用来判定逻辑条件。整型值和布尔值之间不能进行相互转换。

C注释:在C中,数值或指针可以代替boolean值。整数0相当于布尔值false,非0值相当于布尔值true。在Java中则不行。因此,Java应用程序员不会遇到下述麻烦:

if(x=0)//oops...meant x==0

在C中这个测试可以编译运行,其结果总是false。而在Java中,这个测试将不能通过编

译,其原因是整数表达式x = 0不能转换为布尔值。

    推荐阅读
  • 乳胶床垫的利弊及注意事项(乳胶床垫的利弊分析)

    天然乳胶含有纯天然物质橡胶分子和对身体健康有益的蛋白质,脂肪酸等物质,完全是天然环保和健康的。而高于8000人民币的乳胶床垫往往是品牌溢价,跟产品质量无关。乳胶床垫市场假货多,很难购买到正品泰国天然乳胶床垫。但绝大部分国内工厂都声称是泰国天然乳胶,这造成了市场混乱,普通消费者根本无法辨别。而正品泰国天然乳胶床垫,包含国际物流和关税,正规清关,到手价格5000元的泰国乳胶床垫质量已经非常好了。

  • 生化危机威斯克能力(生化危机威斯克超能力)

    在游戏后期里昂会来到一处深不见底的峡谷旁边,想要抵达另一侧,需要经过由三组集装箱构成的一个连环迷宫。在这个过程中,U3总会是冷不防出现进行骚扰。这种压迫感来自于威斯克刀枪不入的身躯和强大的气场,令玩家无法与之抗衡。《生化危机启示录》—瑞秋瑞秋原本是FBC的一名突击队员,在调查女王号邮轮的时候,不幸被感染,成为了一名滴漏者。此时主角全身武器会被强行卸下,要完成一系列的解谜,才能脱困。

  • 阳五行属什么(阳的五行)

    跟着小编一起来看一看吧!阳五行属什么阳五行:土;阳,汉语常用字,一级字,读作yáng。最早见于甲骨文。会意字兼形声字。从阜(fù),昜声。其本义为山南水北朝向日光的地方;一说本义是指高处见到光明的地方,或高处阳光照得到的地方;后引申为日光,日头;又引申为有光的,光亮的,明显的,外露的,可见的,凸出的;又引申为公开地,明显地等意思。“阳”也是中国姓氏之一。

  • ppt页面尺寸怎么弄(页面尺寸都不会设置怎么说的过去)

    今天跟大家聊聊PPT的尺寸与自定义画布!一般来讲,如果要用在投影仪上,特别是学校课堂、会议提案、现场演示用的投影仪,4:3是标准配置,而如果只是在电脑显示屏上阅览的话,主流的显示屏大多都是16:9的宽屏尺寸,所以在制作PPT以前一定要了解清楚PPT的具体使用场景,否则的话……

  • 鹧鸪天咏古汉台(鹧鸪天-咏扬州个园)

    鹧鸪天-咏扬州个园胜境江南秀个园,遍植竹翠伴假山看花赏月合廊句,瑟鼓调琴宜雨轩佳画绘,雅词填秋冬春夏季图观千秋粉黛扬州美,隧道时空情剧穿注:个园位于江苏省扬州古城东北隅,盐阜东路10号,曾荣获第三批“全国重点文物保护单。

  • 鸡蛋饼怎么煎着最好吃简单(6个鸡蛋搅一搅轻松做早餐)

    大家好,我是第一美食的阿飞,关注阿飞有更多的家常菜供大家参考!只需要几个鸡蛋,搅一搅就能轻松做,加点生菜叶或者蔬菜丝,清香营养、全家爱吃,关键是几十秒就能烙一张,不加面粉的蛋饼原来这么柔软清香。好了,这道清香营养的鸡蛋饼就做好了,喜欢的朋友赶紧试试吧。

  • 李宗盛歌词改编(痛仰乐队改编李宗盛经典被群嘲)

    继《我愿意》之后,痛仰又改编了《阴天》,这首李宗盛写下的经典情歌被痛仰重新编曲之后,添加了很多迷幻元素,别是一番风味。-02-前一段时间,在乐夏的舞台上,痛仰改编王菲的《我愿意》同样也引发了不少争议。正当所有人期待着痛仰能够改编一版摇滚、躁动风的《我愿意》时,高虎选择用一种温柔似水的唱法来诠释这首歌。然而这波争议还是蔓延到了网络上,微博上甚至出现了这样的热搜。

  • b站评分9.9最高的番(一部被B站错过的年度霸权番)

    无论哪个季度的新番,B站至少要买三分之二的版权。但有那么一部番开播即火的番,却并非出自B站。为此还被大家称之是为B站最不应该错过的番。它就是2018年播出的《佐贺偶像是传奇》。《佐贺偶像是传奇》由MAPPA动画公司制作。但漫迷对MAPPA的评价却是,一家难得认真做动画的公司。今年的十月新番《咒术回战》就是出自MAPPA。可是能把偶像和僵尸结合的如此完美,《佐贺偶像是传奇》绝对是第一部。因此出现了“带头冲锋”这个梗。

  • 车检周期10月1日起调整细则(车辆检验周期10月1日起有调整)

    接下来我们就一起去了解一下吧!车检周期10月1日起调整细则从10月1日起,我国将进一步放宽私家车检验周期。将原来非营运小微型载客汽车10年内上线检验3次,也就是在第6年、第8年、第10年检验,调整为检验两次,即在第6年和第10年上线检验;摩托车从今年10月1日起,也是在第6年和第10年上线检验两次即可。对于超过10年的非营运小微型载客汽车和摩托车,今后将统一调整为每年上线检验1次。

  • 美女总裁的顶级高手无弹窗(美女的厨艺堪比顶级厨师)

    打开工作证,秦玉关看到了军衔,政治部中尉。中尉,这个军衔只是一个连级干部,在华夏几百万军人里面最少要有几万个这样的职称。但这个职务的上级部门要是政治部的话,性质就截然不同了。政治部,一个完全凌驾于军队和地方政府之间,直属中央直辖的特殊部门。荆红雪用手拍拍双颊,很自然的说。