Java原始类型和值

原始类型和值

java虚拟机支持的原始数据类型包括运算类型、布尔类型和返回地址类型。运算类型包括整型和浮点型。
    整型包括:
    byte,8比特有正负的二进制整数,默认值是0;
    short,16比特位有正负的二进制整数,默认值是0;
    int,32比特位有正负的二进制整数,默认值是0;
    long,16比特位有正负的二进制整数,默认值是0;
    char,16比特位无符号整数表示基于多文种平台的联合码的值,用utf-16编码,默认值是null编码点(\u0000)。
    浮点类型包括:
    float,其值是浮点值集的元素或在支持的地方是浮点扩展指数集的元素,默认值是正零
    double,其值是双精度值集的元素或在支持的地方是双精度扩展指数的值集的元素,默认值是正零。
    boolean类型的值编码了事实值true和false,默认值是false。
    在java虚拟机规范第一版中并不认为布尔类型是一个java虚拟机类型。然而布尔值在java虚拟机中有有限的支持。在java虚拟机规范第二版中用创建布尔类型来澄清这个问题。
    返回地址类型值指向java虚拟机指令的操作码。作为原始类型,只有返回地址类型不直接与java编程语言类型关联。

整型类型和值

java虚拟机中整型类型的值域分别是:
    byte,从-128(包含)到127(包含)(-2^7至2^7-1)
    short,从-32768(包含)到32767(包含)(-2^15至2^15-1)
    int, 从-214743648(包含)到214743647(包含)(-2^31至2^31-1)
    long, 从- 9223372036854775808(包含)到214743647(包含)(-2^63至2^63-1)
    char, 从0(包含)到65535(包含)(-2^0至2^16-1)

浮点类型,值域及值

浮点类型包括float和double,它们与32bit单精度和64bit双精度IEEE754格式值和在IEEE 标准中二进制浮点运算说明中的操作相关联。
IEEE754标准不但包含正数和负数,还包含正负零,正负无穷大,一个特殊的不是数值类型值(以下简写为“NaN”)。NaN值用来表示某些非法操作的结果比如0除以0。
每个java虚拟机的实现都要支持两个标准的浮点值集,分别为浮点数值集合双精度浮点数值集。此外,一个java虚拟机的实现可能在其中支持两个中的一个或全部扩展指数浮点值集,称之为浮点扩展指数值集和双精度扩展指数值集。在特定环境下这些扩展指数值集可能用来替代值集来表现浮点或双精度类型的值。
任何有限非零的浮点值集全部能用s?m?2(e-N+1),s为+1或-1,m是一个比2N小的正整数,e是一个从Emin=-(2k-1-2)至Emax=2k-1-1并包含两者的一个整数,N和K是个依赖于值集的变量。许多值能够用多余一种的这种形式来表达,比如:假设在值域中有一个值v能够在这种形式中使用s、m和e恰当值来表达,如果m是一个偶数,e小于2k-1,,我们就能够使用m以及e增加1来同样数值v的第二种表现形式。在这种形式的表达中如果m>=2N-1就称之为标准的,否则表达式称之为非标准的。如果一个值域中的值不能够用m>=2N-1的形式来表达,那么这个值就被称为非标准值,因为它没有标准的表现形式。
对于两个必须和两个可选浮点值集在参数N和K上的约束(还有由此推导的参数Emin和Emax)在表格2.1中进行了总结。
当一个或两个扩展指数值集被实现支持时,每一个被支持的扩展指数值集都有明确的独立实现常量K,K的值按表2.1尽行约束;K值推导了Emin和Emax的值。
四个值中的任何一个不仅包括赋与的有限非零值,还包含正零、负零、正无穷、负无穷和NaN五个值。请注意按表2.1中约束设计,每一个浮点值集元素都是必然的,浮点数扩展指数值集、双精度扩展指数值集也是一样。同样每个双精度值元素是必然的双精度扩展指数值集也一样。每个扩展指数值集比相应的标准值集有更大范围的指数值,但是没有更多的精度。
    浮点值集的元素是准确值,它能够用IEEE754标准中定义的单精度浮点格式表示,除了唯一的NaN值外(IEEE 754详细说明224-2与NaN值的不同)。双精度值集的元素是准确的值,它能够用IEEE 754标准中定义的双精度格式表示,除了唯一的NaN值外(IEEE 754详细说明253-2与NaN值的区别)。注意,然而浮点扩展指数和双精度扩展指数数值集的元素并不能分别与IEEE 754中的单精度扩展和双精度扩展格式对应。说明文档并没有要求浮点数集的详细表示方法除了要求在class文件格式中浮点数表示的位置外。
    浮点数、浮点数扩展指数、双精度和双精度扩展指数的值集都不是类型。java虚拟机用浮点数值集表示浮点数的实现通常都是正确做法;然而用双精度浮点数值集作为替代的实现也是被允许的。类似的,在java虚拟机的实现当中用双精度值集表示双精度通常是正确做法,然而在相关上下文中,用双精度扩展指数的一个元素替代的实现也是被允许的。
    除了NaN的值,浮点值集的值是有序的。当范围从最小到最大时,它们分别是负无穷、负有限值、负零和正零、正有限值、正无穷。
    浮点数的正零和负零比较起来是相等的,但还有其他方法可以区分它们;比如:用1.0除以0.0结果为正无穷,用1.0除以-0.0结果为负无穷。
    NaN是无序的,所以不论其中一个或两个都是NaN,它们的值比较和值测试结果都是false。特别是,一个与其本身相冲突值相等测试结果为false,当且仅当值是NaN时。一个不相等值的测试结果为true,如果任何一个值为NaN。

Java原始类型和值,布布扣,bubuko.com

时间: 2024-09-29 09:57:47

Java原始类型和值的相关文章

java date类型和calendar类型区别

Date类 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理.这里简单介绍一下Date类的使用. 1.使用Date类代表当前系统时间 Date d = new Date(); System.out.println(d); 使用Date类的默认构造方法创建出的对象就代表当前时间,由于Date类覆盖了toString方法,所以可以直接输出Date类型的对象,显示的结果如下: Sun Ma

Java数据类型和MySql数据类型对应表(转)

Java数据类型和MySql数据类型对应表 java mysql 数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.String 12   CHAR N CHAR java.lang.String 1   BLOB L+N BLOB java.lang.byte[] -4   TEXT 65535 VARCHAR java.lang.String -1        

Java数据类型和MySql数据类型对应表

Java数据类型和MySql数据类型对应表: 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.String 12 CHAR N CHAR java.lang.String 1 BLOB L+N BLOB java.lang.byte[] -4 TEXT 65535 VARCHAR java.lang.String -1 INTEGER 4 INTEGER UNSIGNED java.lang.Long 4 TI

Java数据类型和MySql数据类型对应一览

类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.String 12   CHAR N CHAR java.lang.String 1   BLOB L+N BLOB java.lang.byte[] -4   TEXT 65535 VARCHAR java.lang.String -1               INTEGER 4 INTEGER UNSIGNED java.la

JS的类型和值

1.类型 ECMAScript语言中所有的值都有一个对应的语言类型.ECMAScript语言类型包括Undefined.Null.Boolean.String.Number和Object. 对语言引擎和开发人员来说,类型是值的内部特征,它定义了值的行为,以使其区别于其他值. 内置类型 JavaScript有七种内置类型: 空值(null) 未定义(undefined) 布尔值(boolean) 数字(number) 字符串(string) 对象(object) 符号(symbol,ES6中新增)

Lua的类型和值

Lua的类型和值 (一)基础介绍 Lua是一种动态类型的语言,变量不需要做定义.Lua中有八种类型,分别是 nil -- 空 boolean -- 布尔 number -- 数字 string -- 字符串 userdata -- 自定义 function -- 函数 thread -- 线程 table -- 表 用type()方法可以识别变量的类型. 1 print(type(nil)) --> nil 2 print(type(true)) --> boolean 3 print(typ

类型和值

Lua是动态类型语言,变量不要类型定义.Lua中有8个基本类型分别为:nil.boolean.number.string.userdate.function.thread和table.函数type可以测试给定变量或者数值的类型. print(type(“Hello world”))           -->   string print(type(10.4*3))                      --> number print(type(print))              

lua类型和值

lua是动态类型语言,变量不要类型定义.lua中有8个基本类型分别为:nil.boolean.number.string.userdata.function.thread和table. 可以通过type测试给定变量或者值的类型. 1 print(type("Hello world")) --> string 2 print(type(10.4*3)) --> number 3 print(type(print)) --> function 4 print(type(t

Java数据类型和SQL Serverl数据类型对应表

SQL Server 类型 JDBC 类型 (java.sql.Types) Java 语言类型 bigint BIGINT long timestamp binary BINARY byte[] bit BIT boolean char CHAR String decimal money smallmoney DECIMAL java.math.BigDecimal float DOUBLE double int INTEGER int image varbinary(max) LONGVAR