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

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

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

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不能转换为布尔值。

    推荐阅读
  • 好看的微信头像男士霸气冷酷(干净洒脱的男士微信头像)

    大家好,我是爱画画的小小苏!分享一组干净洒脱的男士微信头像,画风精致细腻,干净利落,辨认度很高,很适合中年男士用作微信头像,提升个人气质和魅力!

  • 奶油小面包的做法(奶油小面包怎样做法)

    奶油小面包的做法食材:面包粉300克、淡奶油240克、黄油适量、粗砂糖适量、酵母3克、细砂糖50克。将面团收圆,放在面包桶中进行基础发酵。待面团是原来的二倍大时,用利刀在表面划口,刷上融化的黄油液,再在划口处撒少许粗砂糖,此时烤箱开始预热160度。将面包烤盘送进预热好的烤箱中层,160度,上下火,20分钟。出炉后从模具中取出,晾架上晾凉食用即可。

  • 2023年成都露天音乐公园6月1日起关闭 2020春节成都露天音乐公园有演出吗

    关于成都露天音乐公园封闭管理的通告成都城投露天音乐公园运营有限公司近期拟启动对成都露天音乐公园进行功能完善和维护保养,将于2023年6月1日零时起对成都露天音乐公园实行封闭管理,解除封闭管理时间暂定为8月15日。给您带来了不便,敬请您的理解和支持,谢谢!

  • 菠萝蜜怎么挑选(菠萝蜜挑选的方法)

    以下内容希望对你有帮助!菠萝蜜怎么挑选观察颜色:成熟菠萝蜜,是金黄色,没熟透的带一点青绿色。

  • 有关剑的霸气的诗句(品读10句写剑的霸气古诗词)

    因女色往往充满柔情蜜意,害人时不4.路逢侠客须呈剑,不是才人莫献诗。——唐·杜甫《闻官军收河南河北》在剑门外忽然听说官军收复了蓟北,刚听到这个好消息,泪水就沾满了衣裳。宝剑锋利的剑刃是通过不断磨练,才形成的。锥子即便磨得再锋利,但是作用毕竟有限。——唐·贾岛《剑客》花费了十年的光景,才能磨出一把宝剑,剑锋十分犀利,但从未试过其锋芒。

  • 商鞅变法发生于哪个朝代(商鞅变法的简介)

    接下来我们就一起去研究一下吧!商鞅变法发生于哪个朝代商鞅变法发生在战国时期。商鞅变法,是指卫国人商鞅在秦国实行的变法运动。经过商鞅变法,秦国的经济得到发展,军队战斗力不断加强,发展成为战国后期最富强的集权国家。

  • iphone13充电功率实测(iPhone13充电30W比20W到底有多大提升)

    绿联20W充iPhone13,电流趋于稳定后,功率爬升到19.63W左右。直到50分后,电压由9V降至5V左右,功率在8W上下波动。这是因为电量达到80%后,iPhone会自行转换为涓流模式,从而避免持续的高功率快充影响手机电池寿命。1小时31分后,充电结束,整个过程中峰值功率约为26W。使用绿联20W给iPhone12、iPhone13充电,30分钟后分别充到59%、57%,在前1个小时内,两条曲线几乎重合,说明两者的充电速度相差无几。

  • 世界上真的有奥特曼吗(咸蛋超人是哪里用的译名)

    世界上真的有奥特曼吗世界上没有奥特曼。奥特曼是日本人编的,不是真实存在的。奥特曼系列,是日本“特摄之神”的圆谷英二导演一手创办的“圆谷制作公司”自二十世纪六十年代起推出的空想特摄系列电视剧、电影、漫画、舞台剧等作品。以1966年的《奥特Q》为首,自同年刚播出的《初代奥特曼》开始,建立了“巨大英雄与怪兽对战”的模式。

  • 刑法放火犯罪应该要怎么认定 放火罪属于刑事犯罪吗

    放火罪与一般放火行为一般放火行为,是指情节显著轻微危害不大、不危害公共安全的放火行为。但在司法实践中,在处理具体放火案件时,对于某种放火行为是一般放火行为,还是构成放火罪,有时发生意见分歧。放火罪的既遂与未遂放火犯通常以烧毁目的物为犯罪目的。但是,判断放火罪的既遂与未遂,不应以犯罪目的是否达到为标准,而应以行为是否符合本法规定的放火罪的全部构成要件为标准。

  • 肖云鹏见老班长是什么电视剧(肖云鹏电视剧简介)

    肖云鹏见老班长是什么电视剧肖云鹏见老班长是电视剧《和平使命》的情节。《和平使命》是由中国国际电视总公司出品的现代军事题材类电影,该片由马润生导演,郑晓宁、李洪涛、郭铁诚、杜志国等主演。该剧于2009年1月5日在央视8套黄金时间播出。