一、数据类型
Java是一门强类型的语言。这意味着你必须为每一个变量声明一种类型。一种有8种基本类型,其中4种整形、2种浮点型、1 种用于表示Unicode 编码的字符单元的字符类型 char (请参见论述 char 类型的章节) 和1种用于表示真值的 boolean 类型。
Java 有一个能够表示任意精度的算术包, 通常称为“ 大数值”( big number。) 虽然被称为大数值,但它并不是一种新的 Java 类型,而是一个 Java 对象。
整型
整数。没有小数部分。
- long 占8个字节 一个字节8位 可以表示 二的64次方的数 -9223372036854775808 ~ 9223372036854775807
- int 4个字节 范围 -2147483648 ~ 2147483647 最常用
- short 2个字节 -32768 ~ 32767
- byte 1个字节 -128 ~ 127
在 Java 中, 整型的范围与运行 Java 代码的机器无关。无论在那台机器上运行,整形所占的字节长度不变。C 和 C++ 程序需要针对不同的处理器选择最为高效的整型, 这样就有可能造成一个在 32 位处理器上运行很好的 C 程序在 16 位系统上运行却发生整数溢出。由于Java程序必须保证在所有机器上都能够得到相同的运行结果, 所以各种数据类型的取值范围必须固定。
长整型数值有一个后缀L或者l(注意是小写的L,如40000000000000L),十六进制数有一个前缀0X或0x,二进制数前缀0b或0B,八进制前缀0,所以不推荐使用。从 Java 7 开始,还可以为数字字面量加下划线,如用 1_000_000表示一百万。这些下划线只是为了让人更易读。Java 编译器会去除这些下划线。
浮点类型
表示有小数部分的数。
float 4 字节 大约 ± 3.402 823 47E+38F (有效位数为 6 ~ 7 位)
double 8 宇节 大约 ± 1.797 693 134 862 315 70E+308 (有效位数为 15 位) double精确度比较高,一般使用double
很少的情况适合使用 float 类型,例如,需要单精度数据的库, 或者需要存储大量数据。 float 类型的数值有一个后缀 F 或 f (例如,3.14F。)
没有后缀 F 的浮点数值(如 3.14 ) 默 认为 double 类型。当然,也可以在浮点数值后面添加后缀 D 或 d (例如,3.14D) 。
此外,浮点数是由二进制表示的,没有十进制精度高。所以,System.out.println ( 2.0-1.1 ) 将打印出 0.8999999999999999, 而不是人们想象的 0.9。如果在数值计算中不允许有任何舍入误差, 就应该使用 BigDecimal类。
char类型
占两个字节。
char类型的字符需要用''单引号括起来,字符串使用""双引号括起来。比如'A'和"A"一个表示字符一个表示字符串。char 类型的值可以表示为十六进制值,其 范围从 \u0000 到 \Uffff。
UTF-16 编码采用不同长度的编码表示所有 Unicode 码点。在基本的多语言级别中,每个 字符用 16 位表示,通常被称为代码单元( code unit); 强烈建议不要在程序中使用 char 类型,除非确实需要处理 UTF-16 代码单元。最好 将字符串作为抽象数据类型处理。
boolean类型
boolean (布尔)类型有两个值:false 和 true, 用来判定逻辑条件 整型值和布尔值之间 不能进行相互转换。
二、变量和常量
常量
定义变量的时候,如果加上final
修饰符,这个变量就变成了常量:
final PI = 3.14
常量在定义时进行初始化后就不可再次赋值,再次赋值会导致编译错误。根据习惯,常量名通常全部大写。
变量
Java中,声明变量必须指定类型:
int number ;
double salary;
变量名必须是一个以字母开头并由字母或数字构成的序列,大小写敏感,长度几乎没有限制。建议使用骆驼表示法,不能使用java关键字。
变量初始化
声明一个变量之后,必须用赋值语句对变量进行显式初始化, 千万不要使用未初始化的变量。
Java 编译器认为下面的语句序列是错误的:
int vacationDays;
System.out.println(vacationDays);// ERROR variable not initialized
可以先声明在赋值:
int vacationDays;
vacationDays:12;
也可以声明、赋值在一行完成:
int vacationDays = 12;
在 Java 中, 变量的声明尽可能地靠近变量第一次使用的地方, 这是一种良好的程序编写风格。