1、数据类型

1.1、数据类型有什么用?
	
	数据类型用了声明变量,程序在运行过程中根据不同的数据类型分配不同大小的空间。
	int i = 10;
	double d = 1.23;
	i变量和d变量的类型不同,空间大小不同。

1.2、数据类型在java语言中包括两种:
	
	第一种:基本数据类型
		基本数据类型又可以划分为4大类8小种:
			第一类:整数型
				byte,short,int,long(1 2 4 8)
			第二类:浮点型
				float,double
			第三类:布尔型
				boolean:只有两个值true和false,true表示真,false表示假。
			第四类:字符型
				char:java中规定字符型字面量必须使用单引号括起来。
		
		8小种:
			byte,short,int,long
			float,double
			boolean
			char
	
	第二种:引用数据类型
		字符串型String属于引用数据类型。
		String字符串不属于基本数据类型范畴。
		java中除了基本数据类型之外,剩下的都是引用数据类型。
		引用数据类型在后期面对对象的时候才会接触。

1.3、8中基本数据类型中
	整数型:byte short int long有什么区别?
	浮点型:float和double有什么区别?
	区别:占用空间大小不同。
	
	关于计算机存储单位?
		计算机只能识别二进制。(1010101010....)
		1字节=8个bit(8比特)---1byte = 8bit
		1bit就是一个1或0.
		1KB = 1024byte
		1MB = 1024KB
		1GB = 1024MB
		1TB = 1024GB

		byte b = 2; 在计算机中是这样表示的:00000010
		short s = 2; 在计算机中是这样表示的:00000000 00000010
		int i = 2; 在计算机中是这样表示的:00000000 00000000 00000000 00000010
		.........

		类型		占用字节数量(byte)
		----------------------------------
		byte			1
		short			2
		int				4
		long			8
		float			4
		double			8
		boolean			1 (1byte的1或0,00000001(true)或00000000(false))
		char			2

	关于二进制?
		二进制???
		1		2		3		4		5		6		7
		1		10		11		100		101		110		111	........

		十进制转换为二进制:
			125 转换成二进制???
				办法:除以2,然后余数逆序输出
				111101

		二进制转换为十进制:
			2的2次方	2的一次方	2的0次方
			1			1			1
			1*4	+	1*2	+	1*1 = 7
			
			2的2次方	2的一次方	2的0次方
			1			0			1
			1*4	+	0*2	+	1*1 = 5	

1.4、byte类型的取值范围?
	byte是 [-128 ~ 127] 共可以标识256个不同的数字
	byte类型的最大值是怎么计算出来的?
		byte是一个字节,是8个比特位,所以byte可以存储的最大值是:
			01111111
		注意:在计算机当中,一个二进制位最左边的是符号位,当为0是表示正数,
		当为1是表示负数。所以byte类型最大值是:01111111

		byte类型的最大值是:2的七次方-1

		有几个取值范围须记住:
			(1个字节)byte:[-128 ~ 127]
			(2个字节)short:[-32768 ~ 32767] 可以标识65536个不同的数字
			(4个字节)int:[-2147483648 ~ 2147483647]
			(2个字节)char:[0 ~ 65535] 可以标识65536个不同的数字
		
		short和char实际上容量相同,不过char可以表示更大的数字。
		因为char表示的是文字,文件没有正负之分,所以char可以表示
		更大的数字。

1.5、对于8种基本数据类型来说:
	其中byte,short,int,long,float,double,boolean,这7种类型计算机表示起来
	比较容易,因为他们都是数字,其中布尔类型只有两个值true和false,实际上true
	和false分别在C++中对应的是1和0,1为true,false为0.

	对于char类型来说计算机表示起来比较麻烦,因为char对应的是文字,每个国家的文字
	不一样,不能直接通过“自然算法”转换成二进制。这个时候字符编码诞生了。

	什么是字符编码?
		字符编码是认为的定义的一套转换表。
		在字符编码中规定了一系列的文字对应的二进制。
		字符编码其实本质上就是一本字典,该字段中描述了文字与二进制之间的对照关系。
		字符编码是人为规定的。(是某个计算机协会规定的)

	字符编码涉及到编码和解码两个过程,编码和解码的时候必须采用同一套字符编码
	方式,不然就会出现乱码。

	关于字符编码的发展过程?
		起初的时候计算机是不支持文字的,只支持科学计算。实际上计算机起初是为了
		战争而开发的,计算导弹的轨道...........

		后来随着计算机的发展,计算机开始支持文字,最先支持的文字是英文,英文
		对应得字符编码方式是:ASCII码。

		ASCII码采用1byte进行存储,因为英文字母是26个。(键盘上所有的键全部算上也
		超不过256个。1byte可以标识256种不同的情况。所以因为本身在计算机方面就占有
		优势。)
			
			‘a’--(采用ASCII码进行编码)---97 01100001
			01100001--(采用ASCII码进行解码)---‘a’
			如果编码和解码采用的不是同一个解码方式,会出现乱码。
			‘b’---- 98
			'c'---- 99
			........
			‘A’---- 65
			'B'---- 66
			........
			‘0’---- 48 (这个‘0’不是那个0,而是文字‘0’)
			'1'---- 49
			........

		随着计算机语言的发展,后来国际标准组织制定了ISO-8859-1编码方式,
		又称为latin-1编码方式,向上兼容ASCII码。但不支持中文。

		后来发展到亚洲,才支持中文,日文,韩文...
		中文这块的编码方式:GB2312<GBK<GB18030(容量的关系)
		以上编码方式是简体中文。

		繁体中文:Big5(台湾使用的是大五码。)

		在java中,java语言为了支持全球所有的文字,采用了一种字符编码方式叫做
		Unicode编码,Unicode编码统一了全球所有的文字,支持所有文字。具体的实现
		包括:UTF-8 UTF-16 UTF-32...

	需要记住的:(了解)
		ASCII
		ISO-8859-1(latin-1)
		GB2312
		GBK
		GB18030
		Big5
		Unicode(utf8 utf16 utf32)

2、八种数据类型详解
字符型 char
整数型 byte short int long
浮点型 float double
布尔型 boolean