变量只不过是为了存储数值而保存内存位置。也就是说,当创建一个变量时,将会得到内存中一些空间。
根据变量的数据类型,操作系统将为其分配内存,并决定哪些可以存储在分配的内存中。因此,通过给变量分配不同的数据类型,我们可以在变量中存储整数(integers)、小数(decimals)或字符(characters )。
在Java中有两种可用的数据类型:
- 基本数据类型(Primitive Data Types)
- 参考/对象数据类型(Reference/Object Data Types)
基本数据类型
这里列出了8类Java所支持的基本数据类型。基本数据类型是由语言预定义并且由关键字来命名的。
byte
- 字节数据类型是一个8位的有符号的二进制补码整数
- 最小值为-128(-2^7)
- 最大值为127(2^7-1)
- 默认值为
0
- 字节数据类型用于在大型阵列中节省空间,主要是替换整数,因为一个字节(byte)比一个整型(int)要小四倍
- 例如:
byte a = 100,byte b = -50
short
- 短数据类型是一个16位的有符号的二进制补码整数
- 最小值为-32,768 (-2^15)
- 最大值为32,767 (2^15 -1)
- 默认值为
0
- 短数据类型也可以作为字节数据类型用来节省空间,一个短数据类型(short)比一个整型(int)要小两倍
- 例如:
short s = 10000, short r = -20000
int
- 整数数据类型是一个32位的有符号的二进制补码整数
- 最小值为- 2,147,483,648.(-2^31)
- 最大值为 2,147,483,647.(2^31 -1)
- 默认值为
0
- 整数数据类型一般用作整数值的默认数据类型
- 例如:
int a = 100000, int b = -200000
long
- 长数据类型是一个64位的有符号的二进制补码整数
- 最小值为-9,223,372,036,854,775,808.(-2^63)
- 最大值为 9,223,372,036,854,775,807. (2^63 -1)
- 默认值为
0L
- 长数据类型一般用于一个数值超过整型范围
- 例如:
long a = 100000L, long b = -200000L
float
- float数据类型是32位IEEE 754单精确度的浮点
- float数据类型主要用于在大型的浮点数阵列中节省空间
- 默认值为
0.0f
- float数据类型从来不用于精确值,如货币
- 例如:
float f1 = 234.5f
double
- double数据类型是64位IEEE 754双精确度的浮点
- 这种数据类型一般用于小数值的默认数据类型
- double数据类型从来不用于精确值,如货币
- 默认值为
0.0d
- 例如:
double d1 = 123.4
boolean
- 布尔数据类型代表一个比特的信息
- 仅存在两种可能值:
true
andfalse
- 这种数据类型用于追踪真/假条件的简单标记
- 默认值为
false
- 例如:
boolean one = true
char
- char数据类型是一个16位的Unicode字符
- 最小值为’\u0000’ (or 0)
- 最大值为 ‘\uffff’ (or 65,535 inclusive)
- char数据类型用于存储任意字符
- 例如:
char letterA ='A'
参考数据类型
- 参考变量是使用类定义的构造函数创建的。他们被用来访问对象。这些变量被声明为一种不能改变的特定类型。例如:
Employee
,Puppy
等 - 类对象以及数组变量的各种类型应归入参考变量类型
- 任何参考变量的默认值为
null
- 一个参考变量可被用于访问任一声明类型或相容类型的对象
- 例如:
Animal animal = new Animal("giraffe")
Java文本(Literals)
文本是一个固定值的源代码表示。他们在没有任何计算的代码中直接表示。
文本可以被分配到任一原始类型的变量中。例如:
1 | byte a = 68; |
byte, int, long, and short可以用十进制、十六进制或八进制的数字系统表示。
当用这些数字系统表示文本时,经常用前缀0用来表示八进制,前缀0x用来表示十六进制。例如:
1 | int decimal = 100; |
Java中的字符串跟大多数语言中的一样,都是指被一对封闭的双引号所包含的字符序列。例如:
1 | "Hello World" |
String
and char
文本可以包含任一Unicode字符。例如:
1 | char a = '\u0001'; |
Java语言支持一些string
and char
文本特殊的转义字符。如下:
符号 | 所代表字符 | |
---|---|---|
\n | 换行 (0x0a) | |
\r | 回车符 (0x0d) | |
\f | 换页 (0x0c) | |
\b | 退格 (0x08) | |
\s | 空格 (0x20) | |
\t | tab | |
\” | 双引号 | |
\’ | 单引号 | |
\ \ | 反斜线 | |
\ddd | 八进制字符(ddd) | |
\uxxxx | 十六进制UNICODE字符(xxxx) | |
\\u0024 | .(点) | |
\\u0024 | $(美元符号) | |
\\u005E | ^(乘方符号) | |
\\u007B | {(左大括号) | |
\\u005B | [(左方括号) | |
\\u0028 | ((左圆括弧) | |
\\u007C | (竖线) | |
\\u0029 | )(右圆括弧) | |
\\u002A | *(星号) | |
\\u002B | +(加号) | |
\\u003F | ?(问号) |
进制之间相互转换
二进制,八进制,十六进制,十进制间进行相互转换1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23// 十进制转成十六进制:
Integer.toHexString(int i)
// 十进制转成八进制
Integer.toOctalString(int i)
// 十进制转成二进制
Integer.toBinaryString(int i)
// 十六进制转成十进制
Integer.valueOf("FFFF",16).toString()
// 八进制转成十进制
Integer.valueOf("876",8).toString()
// 二进制转十进制
Integer.valueOf("0101",2).toString()