javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(3)-- 基本数据类型的默认值
2017-04-26 11:30
841 查看
默认值
当声明一个字段时,并不总是需要赋值。声明但未初始化的字段将被编译器设置为合理的默认值。一般而言,根据数据类型,默认值为零或为空。然而,依赖于这样的默认值,通常被认为是不良的编程风格。 以下图表汇总了八大基本数据类型的默认值。注意:局部变量略有不同,编译器从不将默认值分配给未初始化的局部变量。如果您无法初始化您声明的本地变量,请确保在尝试使用该变量之前为其分配一个值。访问未初始化的局部变量将导致编译时错误。
字面量
您可能已经注意到,在初始化原始类型的变量时,不会使用new关键字。原始类型是语言内置的特殊数据类型。它们不是从类创建的对象。字面值是固定值的源代码表示。字面量的值将直接在您的代码中表示,而不需要计算。如下所示,可以为原始类型的变量分配字面量值:boolean result = true; char capitalC = 'C'; byte b = 100; short s = 10000; int i = 100000;
整型的字面量
如果以字母L或l结尾,则整数文字的长度为long。否则为int类型。建议您使用大写字母L,因为小写字母 l 与数字1难以区分。 整数类型byte,short,int和long的值可以从int 文字 创建。类型long的值超过int的范围可以从长字面值创建。整数字面值可以由这些数字系统表示:十进制:基数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结尾。 浮点类型(float和double)也可以使用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”(大写C带回车)或“S \ u00ED Se \ uF”或“SíSeñor”。对于字符文字,始终使用“单引号”和“双引号”。 Unicode转义序列可能在程序中的其他位置(例如字段名称)中使用,而不仅仅是char或String文字。Java编程语言还支持char和String文字的一些特殊的转义序列:\ b(空格),\ t(tab),\ n(换行),\ f(form feed),\ r(回车) \“(双引号),\’(单引号)和\(反斜杠)。
还有一个特殊的null字面量,可以用作任何引用类型的值。 null可以分配给任何变量,除了原始类型的变量。除了测试其存在之外,您可以使用空值很少。因此,在程序中经常使用null作为标记来指示某些对象不可用。
最后,还有一种特殊的字面意思,称为类字面量,通过采用类型名称并附加“.class”;例如String.class。这是指代表类型本身的对象(类型为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; // OK (decimal literal) int x1 = 5_2; // Invalid: cannot put underscores // At the end of a literal int x2 = 52_; // OK (decimal literal) int x3 = 5_______2; // Invalid: cannot put underscores // in the 0x radix prefix int x4 = 0_x52; // Invalid: cannot put underscores // at the beginning of a number int x5 = 0x_52; // OK (hexadecimal literal) int x6 = 0x5_2; // Invalid: cannot put underscores // at the end of a number int x7 = 0x52_;
相关文章推荐
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(2)-- 变量和常用数据类型
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(4)-- 变量和数组
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(7)-- 流程控制语句
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(1)-- 变量
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(6)-- 表达式、语句、块
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(5)-- 运算符
- javaSE_8系列博客——Java语言的特性(四)--注解--(1)--基础知识
- javaSE_8系列博客——Java语言的特性(一)--关于面向对象基本概念的理解(2)--对象
- JavaSE_8系列博客——Java语言的特性(六)--泛型(3)--泛型和类型通配符
- javaSE_8系列博客——Java语言的特性(五)--接口和继承(4)--使用接口作为类型
- javaSE_8系列博客——Java语言的特性(一)--关于面向对象基本概念的理解(1)
- javaSE_8系列博客——Java语言的特性(四)--注解--(4)-- 类型注解和可插拔类型系统
- python语言基础知识——基本数据类型详解
- 黑马程序员——JAVA基础之基本数据类型包装类和1.5JDK新特性装箱
- javaSE_8系列博客——Java语言的特性(三)--类和对象(18)--嵌套类(匿名类)
- javaSE_8系列博客——Java语言的特性(五)--接口和继承(1)--宏观把控
- javaSE_8系列博客——Java语言的特性(三)--类和对象(13)--理解类的成员
- java语言-基础(参数的值传递机制(基本数据类型与引用数据类型))
- Java基础知识强化66:基本类型包装类之JDK5新特性自动装箱和拆箱