Java学习笔记之基本数据类型

变量只不过是为了存储数值而保存内存位置。也就是说,当创建一个变量时,将会得到内存中一些空间。

根据变量的数据类型,操作系统将为其分配内存,并决定哪些可以存储在分配的内存中。因此,通过给变量分配不同的数据类型,我们可以在变量中存储整数(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 and false
  • 这种数据类型用于追踪真/假条件的简单标记
  • 默认值为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
2
byte a = 68;
char a = 'A'

byte, int, long, and short可以用十进制、十六进制或八进制的数字系统表示。

当用这些数字系统表示文本时,经常用前缀0用来表示八进制,前缀0x用来表示十六进制。例如:

1
2
3
int decimal = 100;
int octal = 0144;
int hexa = 0x64;

Java中的字符串跟大多数语言中的一样,都是指被一对封闭的双引号所包含的字符序列。例如:

1
2
3
"Hello World"
"two\nlines"
"\"This is in quotes\""

String and char文本可以包含任一Unicode字符。例如:

1
2
char a = '\u0001';
String 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()