目录
一、数据类型相关基础
1.1 数据类型作用
数据类型用来声明变量,程序在运行过程中根据不同的数据类型分配不同大小的空间。
int i = 10;
double d = 1.23;
i变量和d变量类型不同,空间大小不同。
1.2 数据类型在java语言中分类
第一种:基本数据类型(8小种)
基本数据类型又可以划分为4大类8小种:
第1类:整数型
byte,short,int,long (没有小数的)
第2类:浮点型
float,double (带有小数的)
第3类:布尔型
boolean:只有两个值true和false,true表示真,false表示假
第4类:字符型
char:java中规定字符型字面量必须使用单引号括起来。属于文字。
第二种:引用数据类型
字符串型String属于引用数据类型。
String字符串不属于基本数据类型范畴。
java中除了基本数据类型之外,剩下的都是引用数据类型。
引用数据类型后期面向对象的时候才会接触。
1.3 计算机存储单位
计算机只能识别二进制。(1001101100...)
1字节 = 8bit(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
1.4各数据类型取值范围
数据类型 | 字节数 | 取值范围 |
byte | 1 | [-2^7~2^7-1]、[-128 ~ 127] |
short | 2 | [-2^15~2^15-1]、[-32768~32767] |
int | 4 | [-2^31~2^31-1]、[-2147483648~2147483647] |
long | 8 | [-2^63~2^63-1] |
float | 4 | [-3.4*10^38 ~ 3.4*10^38 ] |
double | 8 | [-1.7*10^308 ~ 1.7*10^308] |
boolean | 1 | true / false |
char | 2 | [0~2^16-1]、[0 ~ 65535] |
举例说明:
byte类型的取值范围:
byte是 [-128 ~ 127] 共可以标识256个不同的数字。
问:byte类型的最大值是怎么计算出来的?
答:byte是1个字节,是8个比特位,所以byte可以存储的最大值是:01111111
注意:在计算机当中,一个二进制位最左边的是符号位,当为0时表示正数,当为1时表示负数。所以byte类型最大值是:01111111
即:2的7次方-1
即:10000000 - 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 字符编码
1.5.1 字符编码由来
7类:byte, short, int, long, float, double, boolean
这7种类型计算机表示起来比较容易,因为他们都是数字。其中布尔类型只有两个值true和false,实际上true和false分别在C++中对应的是1和0,1为true,false为0。
1类:char
对于char类型来说计算机表示起来比较麻烦,因为char对应的是文字,每一个国家的文字不一样,文字不能直接通过“自然算法”转换成二进制。就需要字符编码。
1.5.2 什么是字符编码
字符编码是人为的定义的一套转换表。规定了一系列的文字对应的二进制。其本质上就是一本字典,该字段中描述了文字与二进制之间的对照关系。
字符编码涉及到编码和解码两个过程,编码和解码的时候必须采用同一套字符编码方式,不然就会出现乱码。
1.5.3 关于字符编码的发展过程
第一阶段:无
起初的时候计算机是不支持文字的,只支持科学计算。
第二阶段:ASCII码
后来随着计算机的发展,计算机开始支持文字,最先支持的文字是英文,英文对应的字符编码方式是:ASCII码。
ASCII码采用1byte进行存储,因为英文字母是26个。(键盘上所有的键全部算上也超不过256个。1byte可以表示256种不同的情况。所以英文本身在计算机方面就占有优势。)
ASCII码表:
第三阶段:ISO-8859-1编码方式
随着计算机语言的发展,后来国际标准组织制定了ISO-8859-1编码方式,又称为latin-1编码方式,向上兼容ASCII码。但不支持中文。
第四阶段:中文编码
简体中文:后来发展到亚洲,才支持中文,日文,韩文....中文这块的编码方式:GB2312<GBK<GB18030 (容量的关系)
繁体中文:big5(台湾使用的是大五码。)
第五阶段:unicode编码
在java中,java语言为了支持全球所有的文字,采用了一种字符编码方式叫做unicode编码。unicode编码统一了全球所有的文字,支持所有文字。
具体的实现包括:UTF-8 UTF-16 UTF-32....
需要记住:
ASCII('a'是97 'A'是65 '0'是48...)
ISO-8859-1(latin-1)
GB2312
GBK
GB18030
Big5
unicode(utf8 utf16 utf32)