• java 原生类型(翻译自Java Tutorials)


    原文出自 http://www.cnblogs.com/ggjucheng/archive/2012/12/08/2809371.html

    英文出自 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

    java编程语言是静态类型,这表示变量使用前必须声明。这涉及阐明该变量的类型和名称,如你已经看到了:

    int gear = 1;

    上面告诉你的程序,存在一个字段名为”gear”,存储数字的数据,初始值为“1”。变量的数据类型,决定它可以包含的值,还有它可以做的操作。对于int更多的是,java编程语言支持其他原生数据类型。原生类型是编程语言预定义的,而且类型名字也是保留字。原生类型的值,不会和其他原生类型的值共享状态。java编程语言支持八种原生类型:

    byte:byte的数据类型是一个8位有符号的二进制补码整数。最小值是128,最大值是127(包括)。当节省内存很重要,byte数据类型在大数组中节省内存很有用。如果变量的值的限制有利于澄清代码,也可以用byte替代int;事实上,变量的范围限制,可以作为文档形式。

    short:short数据类型是16位的有符号的补码整数。最小值是-32,768 ,最大值是32,767 (包括)。和byte相比,也有一样准则:当节省内存很重要,short数据类型在大数组中节省内存很有用。

    int:int数据类型是32位的有符号的补码整数。最小值是-2,147,483,648 ,最大值是2,147,483,647 (包括)。对于完整的值,这个数据类型通常是默认选择,除非有其他原因(例如上述原因)。这个数据类型大多数情况下,足够你的程序使用整数。如果你需要一个更大范围的值,可以使用long。

    long:long数据类型是64位的有符号的补码整数。最小值是-9,223,372,036,854,775,808 ,最大值是9,223,372,036,854,775,807 (包括)。当需要的值范围超过了int,就可以使用这个数据类型。

    float:float 数据类型是单精度 32 位 IEEE 754 浮点数。它的值的范围超出了本讨论,但是可以参考java语言规范的浮点类型。和byte,short的建议一样,当你使用大量浮点数数组,需要节省内存,使用float。此数据类型永远不应该用于精确的值,如货币。为此,您将需要使用 java.math.BigDecimal 类来代替。Java 平台提供数字和字符串包括 BigDecimal 和的其他有用的类。

    double:double数据类型是单精度 64 位 IEEE 754 浮点数。它的值的范围超出了本讨论,但是可以参考java语言规范的浮点类型。对于小数值,这个数据类型是默认选择。如上面的建议,此数据类型永远不应该用于精确的值。

    boolean:boolean数据类型只有两个可能值:true和false.使用此数据作为简单标记来跟踪真/假条件。这种数据类型代表一个比特的信息,但它的“大小”没有明确界定。

    char:char数据类型是单个16 位Unicode 字符。它的最小值是'\u0000' (或0),最大值是'\uffff'(或65,535 包括).

    除了上面列出的8个原生数据类型,java编程语言通过类java.lang.String提供字符串的特殊支持。使用两个双引号包围字符串,会自动创建String对象;例如,String s = "this is a string";String对象是不可变的,这表示它一旦被创建,它的值就不可变。类String从技术上讲,它不是一个原生类型,但是可以认为,它是java语言特殊支持的,你可能会倾向于认为它是原生类型。

    默认值

    当字段声明,未必一定要赋值。字段声明了,但是没有初始化,编译器将会设置一个合理的默认值。一般来说,默认值是0或者null,取决于数据类型。但是,依靠这种默认值,一般认为是糟糕的编程风格。

    下面的图标总结上面涉及的数据类型的默认值。

    Data TypeDefault Value (for fields)
    byte 0
    short 0
    int 0
    long 0L
    float 0.0f
    double 0.0d
    char '\u0000'
    String (or any object)   null
    boolean false

    局部变量略有不同,编译器不会给一个没有初始化的局部变量赋默认值。如果你没有在局部变量声明时,初始化变量,那么,你必须在使用它之前给它赋值。访问一个没有初始化的局部变量,编译器会报错。

    常量

    你可能注意到初始化原生类型的变量,不用使用new关键字。原生类型是java语言内置的特殊数据类型,不是类创建的对象。常量是源代码里表示的固定值。常量直接表示代码中不要求计算。如下显示,原生类型的变量可以赋值常量:

    boolean result = true;
    char capitalC = 'C';
    byte b = 100;
    short s = 10000;
    int i = 100000;
    Integer Literals

    整数常量

    如果整数常量结尾是字母L或者l,那么它是long类型,否则它就是int类型。推荐使用大写字母L,因为小写字母l和数字1很难区分。

    从int常量,可以创建整数byte,short,int,long。long常量,可以创建超出int的范围的long类型的值。整数常量可以由下面数字系统表达:

    十进制:10进制,包含从0到9的数字,这个是你每日都用的数字系统。

    十六进制:16进制,包含0到9,字母A到F。

    二进制:2进制,包含0到1的数字(Java SE 7和后续版本可以创建二进制常量)。

    常规编程,十进制系统是使用的唯一的数字系统。但是,如果你在其它数字系统需要使用,下面的例子,演示正确语法。前缀0x指示十六进制,0b指示二进制:

    // The number 26, in decimal
    int decVal = 26;
    // The number 26, in hexadecimal
    int hexVal = 0x1a;
    // The number 26, in binary
    int binVal = 0b11010;

    浮点常量

    以字母F或者是f结尾的浮点常量是float类型,否则其它就是double类型,这里有个可选的选项是以字母D或者d结尾。

    浮点型 (浮点和双精度) 也可以表示使用 E 或 e (科学记数法)、 F 或 f (32 位浮点常量) 和 D 或 d (64 位双精度浮点常量;这是默认设置,按照惯例可以省略)。

    double d1 = 123.4;
    // same value as d1, but in scientific notation
    double d2 = 1.234e2;
    float f1 = 123.4f;

    字符和字符串常量

    char和String常量包含任意Unicode (UTF-16)字符。如果编辑器和文件系统允许,就可以直接在代码里使用字符串。如果不允许,使用"Unicode 转义",例如'\u0108' ,char常量使用’单引号’,String常量使用”双引号”。Unicode 转义序列可以用于程序的其他地方(例如字段名),而不是char或String常量。

    java编程语言对于char和String常量也支持其他转义:\b (退格键), \t (选项卡), \n (换行符), \f (换页符), \r (回车), \" (双引号), \' (单引号),  \\ (反斜杠).

    null常量,用于任何引用类型的值。null可以复制给任何变量,处理原生类型。使用null值,可以判断对象是否存在。所以,null常常用来在程序中标记,指示一些对象不可用。

    最后,有一种特别的常量,成为类常量。格式是类型名字加上”.class”;例如,String.class。这表示,引用对象(或者类)表示的类型本身。

    数值常量使用下划线

    Java SE 7以及后续版本,数字常量可以在数字中出现任意的下划线(_)。这个特性,可以在数字常量中给数字分组,提供代码的可读性。

    对于实例,如果代码中的数值包含很多数字,您可以使用下划线字符来分隔数字组为三个,类似于使用标点符号,如逗号,空格,作为分隔符。

    下面的例子,演示在数值常量使用下划线:

    long creditCardNumber = 1234_5678_9012_3456L;
    long socialSecurityNumber = 999_99_9999L;
    float pi = 3.14_15F;
    long hexBytes = 0xFF_EC_DE_5E;
    long hexWords = 0xCAFE_BABE;
    long maxLong = 0x7fff_ffff_ffff_ffffL;
    byte nybbles = 0b0010_0101;
    long bytes = 0b11010010_01101001_10010100_10010010;

    只能将下划线放在数字之间,不能将下划线放在以下位置:

    数值的开头或结尾

    毗邻浮点常量中的小数点

    F或者L后缀的前面

    在数值期望为字符串的位置

    下面的例子证明了数值常量中合法和非法的下划线位置:

    // Invalid: cannot put underscores
    // adjacent to a decimal point
    float pi1 = 3_.1415F;
    // Invalid: cannot put underscores
    // adjacent to a decimal point
    float pi2 = 3._1415F;
    // Invalid: cannot put underscores
    // prior to an L suffix
    long socialSecurityNumber1 = 999_99_9999_L;
    
    // This is an identifier, not
    // a numeric literal
    int x1 = _52;
    // OK (decimal literal)
    int x2 = 5_2;
    // Invalid: cannot put underscores
    // At the end of a literal
    int x3 = 52_;
    // OK (decimal literal)
    int x4 = 5_______2;
    
    // Invalid: cannot put underscores
    // in the 0x radix prefix
    int x5 = 0_x52;
    // Invalid: cannot put underscores
    // at the beginning of a number
    int x6 = 0x_52;
    // OK (hexadecimal literal)
    int x7 = 0x5_2;
    // Invalid: cannot put underscores
    // at the end of a number
    int x8 = 0x52_;
  • 相关阅读:
    使用jsonp跨域调用百度js实现搜索框智能提示(转)
    jsonp 跨域
    Aixs2发布webservice服务
    java web service 上传下载文件
    java 网页 保存上传文件
    flash、js 函数 互相调用
    java web工程启动socket服务
    mysql 在Windows下自动备份
    Servlet中几个常用方法的推衍
    Tomcat常用设置 <持续更新>
  • 原文地址:https://www.cnblogs.com/ggjucheng/p/2809371.html
Copyright © 2020-2023  润新知