Java程序语言是静态类型的,即所有的变量必须在使用之前就声明,包括声明变量的类型和名称,如:
int gear = 1;
这样就声明了一个名为gear,数据类型为int,初始值为1的变量。
一、基本数据类型
基本数据类型由Java语言预定义,由保留关键字命名。Java语言支持的8种基本数据类型如下:
byte:有符号的8位整型,最小值为-128,最大值为127。在大的数组中,使用byte类型可以节省内存。
short:有符号的16位整型,最小值为-32768,最大值为32767。在大的数组中,使用short类型也可以节省内存空间。
int:有符号的32位整型,最小值为-2^31,最大值为2^31-1。若要使用无符号的int数据类型时,可以使用Integer类。
long:有符号的64位整型,最小值-2^63,最大值为2^63-1。
float:32位单精度浮点型。类似于byte和short,在大的浮点型数组中,使用float(而不是double)也可以节省内存空间。float不能用于精确数据,如金额,这种情况下可以使用java.math.BigDecimal类。
double:64位双精度浮点型。定义小数时,double是默认的数据类型。double也不能用于精确数据。
除了8种基本数据类型,Java程序语言还通过java.lang.String类对字符串进行支持。用双引号将字符串括起来会自动创建一个新的String对象,例如:String s = "this is a string";。String对象是不可变的,即对象一旦创建,它的值不能再被改变。
二、默认值
在声明一个字段(域)时,若没有初始化,在编译时,编译器会给它赋一个默认值。默认值一般是0或者null,具体的默认值根据数据类型不同而定。虽然没有给初始值的字段会有默认值,但这是一种不好的编程风格。
不同数据类型的默认值如下:
局部变量略有不同,编译器不会给没有初始化的局部变量赋默认值,因此要确保在使用前进行赋值,否则编译时会报错。
三、字面量
初始化一个基本数据类型的变量时不需要使用new关键字,它不是由class来创建对象的。可以将一个字面量直接赋给基本数据类型的变量,如:
boolean result = true;
char capitalC = 'C';
byte b = 100;
short s = 10000;
int i = 100000;
1. 整型字面量
当一个整型的字面量以L或l结尾是,它是long型的,推荐使用L(大写),因为小写的l和数字1不容易区分。
整型的字面量有三种表达形式:
十进制:包括数字0到9
十六进制:包括数字0到9和字母A到F,前缀为0x
二进制:包括数字0和1,前缀为0b
例:表示26
//十进制(in decimal)
int decVal = 26;
//十六进制(in hexadecimal)
int hexVal = 0x1a;
//二进制(in binary)
int binVal = 0b11010;
2. 浮点型字面量
浮点型字面量以F或者f结尾表示float类型,以D或者d结尾则是double型。double是默认类型,因此D或者d也可以省略。float和double还可以用E或者e表达式,用于科学计数。如下:
double d1 = 123.4;
//d2和d1值相等,d2用科学计数法
double d2 = 1.234e2;
float f1 = 123.4f;
3. 字符和字符串字面量
字符字面量用‘’,即单引号;字符串字面量使用“”,即双引号。
4. 类字面量
由类名加“.class”,是指代表自己的类对象。
5. 下划线在数值字面量中的应用(Java7及以后)
在数字之间可以插入下划线作为分隔符,增加数值的可读性。当数值由多位数字组成时可以使用。下划线只能插在数字之间,但可以连续插入多个。例如:
long creditCarNumber = 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;
int x1 = 5_2;
int x3 = 5_______2;
int x6 = 0x5_2;
Reference:Primitive Data Types (The Java™ Tutorials > Learning the Java Language > Language Basics)