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

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

    推荐阅读
  • 不那么好过的十月我熬过来了(从来没有对十月这么绝望)

    张艺谋的《影》上映至今,票房与评价也都还可以。本片在今年上海国际电影节的主竞赛单元收获颇丰,获得了评委会大奖和最佳编剧奖两相大奖。在上海电影节首映过后,目前豆瓣评分7.4分。印象中,本片原定七月暑期档,临时延档之后,目测本月底是终于要上映了。看了下评价,基本好评都是认为这部电影搞笑、无脑、轻松。

  • 陈氏太极拳老架一路第73式当头炮学习分享(陈氏太极拳老架一路第73式当头炮学习分享)

    陈泽峰,陈氏太极拳第十二代嫡宗传人,自幼随家父陈石山大师学习家传陈氏太极拳,后又师承陈小星大师,拥有国家武术七段和国家一级裁判称号。北京陈泽峰太极拳培训中心及太原陈氏太极拳协会会长。双手变捋,合于右胯。做这个动作时,一定要注意,双拳前冲一定要有力。太极拳除了防身的作用外,还有健身的作用,做这个动作,双拳的冲击力。。

  • 牛肉凉拌怎么做(牛肉凉拌的做法)

    接下来我们就一起去了解一下吧!牛肉凉拌怎么做锅里放清水,下入整块牛肉、两片姜和1大匙料酒烹煮。煮沸后捞去血沫,盖上锅盖用中火煮30-40分钟,煮到用筷子能轻易插穿并且没有血水冒出即可,捞出放凉。洋葱切丝,香菜切段,姜蒜擦成蓉,加辣椒油、生抽、蚝油、陈醋、香油、盐和糖调汁。牛肉放凉后切薄片,加洋葱、香菜和调味汁,再加一大匙煮牛肉的汤,拌均匀即可。

  • 那年歌词(那年歌词是怎样的)

    下面内容希望能帮助到你,我们来一起看看吧!那年歌词《那年》是由耕耕作词,Xun作曲,任然演唱的一首流行歌曲,收录在专辑《任然精选集》中,并发行于2015年9月27日。

  • 树型月季能活多少年 树型月季能活多少年寿命

    这么长的寿命主要是源于之前不断地培育,使它的适应性增强,病虫害变少。不过要是家中的采光条件不好,寿命可能会缩短,还要注意修剪的问题。

  • 关于云的唯美句子简短(描写云的唯美句子)

    以下内容希望对你有帮助!云雾其阔如海,其动如烟,其色如雪。天上浮云似白衣,欺须改变如苍狗。一片白云像碧海上的孤帆在晴空腻游。头顶是一堆紫色的孕育着暴雨的浓云。云彩沉重地漂浮,像一些吃饱的大鸟。成片的云,一起一伏,好像锦缎的褶皱。满天是灰白的云头,快马似的飞奔,飞奔。茫茫云海,如白色的轻纱在山峰间浮荡飘动。彤云密布,瑞雪平铺,粉塑千林,银妆万里。

  • 目前计算机网络采用的模型(计算机网络参考模型)

    计算机网络参考模型计算机网络参考模型1.OSI七层参考模型OSI参考模型是一个开放式体系结构,它规定将网络分为七层,从下往上依次是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,如下表所示层名称各层功能及作。

  • 短路怎么查(教你实用的短路检查方法)

    火线与保护线短路。断开总闸,断开进户保护线,用万表R*100档测量每个插座的火线与保护线之间是否不通。如果通,证明火线与保护线短路,打开每个插座一个一个查找。一个一个的开所有照明灯具,开到跳闸哪一盏,说明该灯具短路。所有照明灯具都亮,再一个一个插上拔下的用电器,并打开。

  • 长江三峡是什么的总称(长江三峡简单介绍)

    瞿塘峡,位于重庆奉节县境内,长8公里,是三峡中最短的一个峡。端入口处,两岸断崖壁立,相距不足一百公尺,形如门户,名夔门。巫峡,位于重庆巫山县和湖北巴东县两县境内,西起巫山县城东面的大宁河口,东至巴东县官渡口,绵延四十五公里,是长江横切巫山主脉背斜而形成的。西陵峡,在湖北宜昌市秭归县境内,西起香溪口,东至南津关,约长66公里,是长江三峡中最长、以滩多水急闻名的山峡。

  • 跳跳糖吃到嘴里面为什么会跳(跳跳糖为什么会)

    跳跳糖里的二氧化碳成分非常少是绝对威胁不到人体的何况跳跳糖在嘴里碰到唾液便融化二氧化碳在口中就已经释出大半其实会进到你肠胃的机率更低因此担心食用跳跳糖会导致胃撑破实在是过度担忧了