javaee论坛

普通会员

225648

帖子

335

回复

349

积分

楼主
发表于 2019-10-30 09:47:58 | 查看: 84 | 回复: 0

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

整型

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

类型存储需求取值范围int4字节-2147483648~2147483648(正好超过20亿)short2字节-32768~32768long8字节-9223372036854775808~9223372036854775807byte1字节-128~127

由于Java程序必须保证在所有机器上都能够得到相同的运行结果,所以各种数据类型的取值范围必须固定。

长整型数值有一个后缀L或l(如4000000000L)。十六进制数值有一个前缀0x或0X(如0xCAFE)。八进制有i一个前缀0,例如010对应八进制中的8。

从Java7开始,加上前缀0b或0B就可以直接写二进制数。例如0b1001就是9。另外,同样是从Java7开始,还可以为数字字面量加下划线,如用1_000_000(或0b1111_0100_0010_0100_0000)表示一百万。这些下划线只是为了让人更易读,Java编译器会去除这些下划线。

packagePrimitiveType;publicclassPrimitiveType{publicstaticvoidmain(String[]args){intnum1=0b1001;intnum2=1_000_000;intnum3=0b1111_0100_0010_0100_0000;System.out.println(num1);System.out.println(num2);System.out.println(num3);}}

运行程序输出:

910000001000000

注意,Java没有任何无符号(unsigned)形式的int、long、short或byte类型。\color{red}{注意,Java没有任何无符号(unsigned)形式的int、long、short或byte类型。}注意,Java没有任何无符号(unsigned)形式的int、long、short或byte类型。

浮点类型

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

类型存储需求取值范围float4字节大约±3.40282347E+38F(有效位数为6~7位)double8字节大约±1.79769313486231570E+308(有效位数为15位)

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

所有的浮点数值计算都遵循IEEE754规范。\color{red}{所有的浮点数值计算都遵循IEEE754规范。}所有的浮点数值计算都遵循IEEE754规范。

具体来说,下面是用于表示溢出和出错情况的三个特殊的浮点数值:

正无穷大Double.POSITIVE_INFINITY负无穷大Double.NEGATIVE_INFINITY不是一个数字Double.NaN特别需要说明的是,不能使用==来检测一个特定值是否等于Double.NaN,应使用Double.isNAN方法。packagePrimitiveType;publicclassPrimitiveType{publicstaticvoidmain(String[]args){booleanbool1=1.0/0==Double.POSITIVE_INFINITY;booleanbool2=-1.0/0==Double.NEGATIVE_INFINITY;booleanbool3=Double.isNaN(0.0/0);System.out.println(bool1);System.out.println(bool2);System.out.println(bool3);}}

运行程序输出:

truetruetruechar类型

char类型原本用于表示单个字符。不过,现在的情况已经有所变化。如今,有些Unicode字符可以用一个char值描述,另外一些Unicode字符则需要两个char值。

char类型的字面量值要用单引号括起来。例如:‘A’是编码值为65所对应的字符常量。它与“A”不同,“A”是包含一个字符A的字符串。char类型的值可以表示为十六进制值,范围从\u0000到\Uffff。例如:\u2122表示注册符号(™)。常用特殊字符的转义序列如下表。

转义序列名称Unicode值\b退格\u0008\t制表\u0009\n换行\u000a\r回车\u000d\"双引号\u0022\’单引号\u0027\\反斜杠\u005c

注意,Unicode转义序列会在解析代码之前得到处理。\color{red}{注意,Unicode转义序列会在解析代码之前得到处理。}注意,Unicode转义序列会在解析代码之前得到处理。

例如,"\u0022+\u0022"并不是一个由引号包围加号构成的字符串("+")。实际上,\u0022会在代码解析之前转换为",这会得到(“”+“”),也就是一个空串。

packagePrimitiveType;publicclassPrimitiveType{publicstaticvoidmain(String[]args){Stringstr="\u0022+\u0022";System.out.println(str);System.out.println("************************");System.out.println(str.equals(""));}}

程序运行输出:

************************trueboolean类型

boolean(布尔)类型有两个值:false和true,用来判定逻辑条件。

注意,整型值和布尔值之间不能进行相互转换。\color{red}{注意,整型值和布尔值之间不能进行相互转换。}注意,整型值和布尔值之间不能进行相互转换。

在C++中,数值甚至指针可以替代boolean值。值0相当于布尔值false,非0值相当于布尔值true。在Java中不是这样!


您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017