变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。
Java的两大数据类型:
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
byte:
short:
int:
long:
float:
double:
boolean:
char:
对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中了。请看下面的例子:
public class PrimitiveTypeTest { |
public static void main(String[] args) { |
// byte |
System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE); |
System.out.println("包装类:java.lang.Byte"); |
System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE); |
System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE); |
System.out.println(); |
// short |
System.out.println("基本类型:short 二进制位数:" + Short.SIZE); |
System.out.println("包装类:java.lang.Short"); |
System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE); |
System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE); |
System.out.println(); |
// int |
System.out.println("基本类型:int 二进制位数:" + Integer.SIZE); |
System.out.println("包装类:java.lang.Integer"); |
System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE); |
System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE); |
System.out.println(); |
// long |
System.out.println("基本类型:long 二进制位数:" + Long.SIZE); |
System.out.println("包装类:java.lang.Long"); |
System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE); |
System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE); |
System.out.println(); |
// float |
System.out.println("基本类型:float 二进制位数:" + Float.SIZE); |
System.out.println("包装类:java.lang.Float"); |
System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE); |
System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE); |
System.out.println(); |
// double |
System.out.println("基本类型:double 二进制位数:" + Double.SIZE); |
System.out.println("包装类:java.lang.Double"); |
System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE); |
System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE); |
System.out.println(); |
// char |
System.out.println("基本类型:char 二进制位数:" + Character.SIZE); |
System.out.println("包装类:java.lang.Character"); |
// 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台 |
System.out.println("最小值:Character.MIN_VALUE=" |
+ (int) Character.MIN_VALUE); |
// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台 |
System.out.println("最大值:Character.MAX_VALUE=" |
+ (int) Character.MAX_VALUE); |
} |
} |
基本类型:byte 二进制位数:8 |
包装类:java.lang.Byte |
最小值:Byte.MIN_VALUE=-128 |
最大值:Byte.MAX_VALUE=127 |
基本类型:short 二进制位数:16 |
包装类:java.lang.Short |
最小值:Short.MIN_VALUE=-32768 |
最大值:Short.MAX_VALUE=32767 |
基本类型:int 二进制位数:32 |
包装类:java.lang.Integer |
最小值:Integer.MIN_VALUE=-2147483648 |
最大值:Integer.MAX_VALUE=2147483647 |
基本类型:long 二进制位数:64 |
包装类:java.lang.Long |
最小值:Long.MIN_VALUE=-9223372036854775808 |
最大值:Long.MAX_VALUE=9223372036854775807 |
基本类型:float 二进制位数:32 |
包装类:java.lang.Float |
最小值:Float.MIN_VALUE=1.4E-45 |
最大值:Float.MAX_VALUE=3.4028235E38 |
基本类型:double 二进制位数:64 |
包装类:java.lang.Double |
最小值:Double.MIN_VALUE=4.9E-324 |
最大值:Double.MAX_VALUE=1.7976931348623157E308 |
基本类型:char 二进制位数:16 |
包装类:java.lang.Character |
最小值:Character.MIN_VALUE=0 |
最大值:Character.MAX_VALUE=65535 |
Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14 × 103 =3140,3.14E-3 就是 3.14 x 10-3 =0.00314。
实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。
引用类型常量在程序运行时,不会被修改的量。
在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:
final double PI = 3.1415927; |
虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量。
字面量可以赋给任何内置类型的变量。例如:
byte a = 68; |
char a = 'A' |
byte、int、long、和short都可以用十进制、16进制以及8进制的方式来表示。
当使用常量的时候,前缀0表示8进制,而前缀0x代表16进制。例如:
int decimal = 100; |
int octal = 0144; |
int hexa = 0x64; |
"Hello World" |
"two\nlines" |
"\"This is in quotes\"" |
char a = '\u0001'; |
String a = "\u0001"; |
符号 | 字符含义 |
---|---|
\n | 换行 (0x0a) |
\r | 回车 (0x0d) |
\f | 换页符(0x0c) |
\b | 退格 (0x08) |
\s | 空格 (0x20) |
\t | 制表符 |
\" | 双引号 |
\' | 单引号 |
\\ | 反斜杠 |
\ddd | 八进制字符 (ddd) |
\uxxxx | 16进制Unicode字符 (xxxx) |